29. februar 2000 - 16:07Der 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.
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..
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
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
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
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... ?!?
* 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.
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.