Avatar billede gon Nybegynder
29. februar 2000 - 16:07 Der er 12 kommentarer og
1 løsning

TCP klient programmering

Ok folkens - så er der point i sigte!

Jeg har lavet et lille program, der skal bruges til at lave afstemninger over LAN, fx. til netparties.

Jeg har fået programmeret serveren og klienten til at forbinde sig med hinanden (winsock1.listen/winsock2.connect)

Problemet er, at jeg gerne vil benytte brugernavn og password og det betyder, at først skal brugernavnet godkendes af serverprogrammet og derefter skal klientprogrammet modtage en "true" besked, der giver det besked om at sende passwordet, som så igen skal tjeckes osv.

Hvis der er nogle der har erfaring med dette, så er jeg villig til at give flere point end jeg har udlovet her... hvis nogen fortæller mig hvordan det er muligt - at give flere point end 60 for et spørgsmål.

venligst,
Karl-Johan V. Jensen
Avatar billede mk-software Nybegynder
03. marts 2000 - 17:09 #1
Hej gon, jeg har selv en gang være igang med at lave nåde med brugernavn og password. i server var der en database. som den sendet data til. det var i et chat program som jeg hente på download.com. men du kan jo lige se om det hjælper dig.. desvære har jeg ikke tid til at skrive den lige fortiden..
Avatar billede gon Nybegynder
03. marts 2000 - 18:32 #2
okie .. takker for ordet ..

Gon
Avatar billede superagentdk Nybegynder
04. marts 2000 - 23:44 #3
Må jeg se dit lille program til at lave vote ting med???

MF@RCF.DK
Avatar billede superagentdk Nybegynder
04. marts 2000 - 23:48 #4
Avatar billede spinner Nybegynder
09. marts 2000 - 10:10 #5
Hej Gon,

jeg har beskæftiget mig en hel del med kommunikation over TCP/IP og UDP/IP, og har bl.a. været inde på verifikation af brugere.

Hvis du stadig har brug for hjælp til dit program, så giv lige et ping, så kigger jeg på det...

\\Spinner
Avatar billede gon Nybegynder
09. marts 2000 - 10:29 #6
Hej spinner...
Jeg er glad for at du har kontaktet mig omkring dette.. jeg er mildest talt ved at blive sindsyg... Programmet skal nemlig bruges til en afstemning til et computerparty, så jeg skal være færdig med det snart..
Jeg har alle de andre ting lavet .. så nu mangler jeg bare det vigtigste :))

Jeg ville blive superglad, hvis du kunne sende mig et skoleeksempel på verifikation på brugere.
Hvis du har brug for at se mit program så kan det også lade sig gøre!

Jeg glæder mig til at høre fra dig.
ses,
Gon
Goldendk@hotmail.com
Avatar billede winkill Nybegynder
12. marts 2000 - 13:36 #7
Ok, i korte træk...

public sub Saa_skal_der_logges_på(Server as string,Port as integer)
  call winsock2.connect (server,port)
end sub

private sub winsock1_connectionrequest(requestid as ???????)
  winsock1.accept(requestid)
  winsock1.senddata "+OK Please login."
end sub

private sub winsock2_DataArrival (bytesTotal As Long)
  winsock2.getdata buffer
  if left(buffer,3) <> "+OK" Then
    Msgbox "Doh, serveren sendte noget crap!" & vbCrLF & "Den sagde: " & mid(buffer,5),vbOkOnly
  elseif mid(buffer,5) = "Please login." Then
    winsock2.senddata "USER BRUGERNAVN"
  elseif mid(buffer,5) = "Please send password." Then
    winsock2.senddata "PASS ADGANGSKODE"
  elseif mid(buffer,5) = "You are welcome here." Then
    ' Du er nu logget ind.
  end if
end sub

private sub winsock2_DataArrival (bytesTotal As Long)
  static User as string
  winsock1.getdata buffer
  select case left(buffer,4)
  case "USER"
    User = Mid(buffer,6)
    winsock1.senddata "+OK Please send password."
  case "PASS"
    If User = "BRUGERNAVN" and Mid(buffer,6) = "ADGANGSKODE" Then
      winsock1.senddata "+OK You are welcome here."
    else
      winsock1.senddata "ERR Invalid username or password."
    end if
  case "QUIT"
    winsock1.close
  end select
end sub


Håber det kan hjælpe dig lidt på vej...
Avatar billede winkill Nybegynder
12. marts 2000 - 13:37 #8
Ups, der var en lille fehler

public sub Saa_skal_der_logges_på(Server as string,Port as integer)
  call winsock2.connect (server,port)
end sub

private sub winsock1_connectionrequest(requestid as ???????)
  winsock1.accept(requestid)
  winsock1.senddata "+OK Please login."
end sub

private sub winsock2_DataArrival (bytesTotal As Long)
  winsock2.getdata buffer
  if left(buffer,3) <> "+OK" Then
    Msgbox "Doh, serveren sendte noget crap!" & vbCrLF & "Den sagde: " & mid(buffer,5),vbOkOnly
  elseif mid(buffer,5) = "Please login." Then
    winsock2.senddata "USER BRUGERNAVN"
  elseif mid(buffer,5) = "Please send password." Then
    winsock2.senddata "PASS ADGANGSKODE"
  elseif mid(buffer,5) = "You are welcome here." Then
    ' Du er nu logget ind.
  end if
end sub

private sub winsock1_DataArrival (bytesTotal As Long)
  static User as string
  winsock1.getdata buffer
  select case left(buffer,4)
  case "USER"
    User = Mid(buffer,6)
    winsock1.senddata "+OK Please send password."
  case "PASS"
    If User = "BRUGERNAVN" and Mid(buffer,6) = "ADGANGSKODE" Then
      winsock1.senddata "+OK You are welcome here."
    else
      winsock1.senddata "ERR Invalid username or password."
    end if
  case "QUIT"
    winsock1.close
  end select
end sub
Avatar billede spinner Nybegynder
12. marts 2000 - 15:01 #9
Hej Gon,

jeg kigger på det lige så snart jeg har fundet min VB CD. Jeg kan f..... ikke finde den... ARGHH..

Hvis du bruger WinKill's eksempel skal du være opmærksom på at det ikke er altid du modtager HELE de sendte data på een gang. Derfor kan der opstå 2 DataArrival's, en med f.eks teksten "+OK Please se" og en ny med teksten "nd password."

Jeg bruger altid et special-tegn til at adskille kommandoer med, så ved jeg hvor jeg skal cut'e en indgående kommando henne, og evt. vente på resten af kommandoen... Hvis jeg udtrykker mig forståeligt... ?!?

\\Spinner.
Avatar billede winkill Nybegynder
12. marts 2000 - 15:40 #10
Spinner > Som sagt; "i korte træk"...

* Det smarteste er _altid_ at starte med at opbygge en protokol der kan styrer dataoverførslen. Personligt foretrækker jeg at tage udgangspunkt i POP3 og så arbejde mig frem imod de funktioner mit program skal bruge, men der er jo frit valg på alle hylder.

* Det er praktisk at arbejde med en form for buffer, for at undgå at opdelte "arrivals" bliver tolket som fejl.

* Husk enten at holde dig til STORE eller små bogstaver, eller at bruge UCase()/LCase() når du skal læse requests.

* DLL styrer!
Avatar billede gon Nybegynder
12. marts 2000 - 19:43 #11
jeg takker for jeres svar .. de var yderst behjælpelige ..
Desværre må jeg nok indrømme, at winkill løber af med sejren :))

Takker mange gange...
Avatar billede winkill Nybegynder
13. marts 2000 - 08:56 #12
"Desværre..." det skal du da ikke være ked af :o)
Avatar billede spinner Nybegynder
13. marts 2000 - 09:33 #13
hehe ... jo han skal... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester