20. juli 2004 - 17:50Der er
37 kommentarer og 1 løsning
Winsock GetData og Tjek bruger fra DB, tilbagesend resultat
Jeg har lavet en kode som tjekker brugernavn og password fra min database, og jeg har osse lavet Clienten så den kan Connecte til min Server.... Det som jeg mangler (kan ikk finde ud af :D): Clienten skal sende intastede brugenavn/password fra tekstfelterne: Text1, og Text2 Så skal jeg have serveren til at reagere på at der bliver sendt data, lægge password ind i strPass og brugernavn ind i strUser, så skal den ellers bare køre mit database tjek...
Serveren er bare et program som kører og lytter efter brugere der vil connecte indtil videre... Det eneste jeg faktisk mangler nu, er hvis jeg for eks. fra klienten sender username og password med | imellem, for eks. user|pass så skal jeg bare finde ud af at få serveren til at adskille dem...
Det vil jeg så prøve... Men når jeg sender data på min Client får den fejlen: Runtime Error '400006': Wrong protocol or connection state for the requested transaction or request
Hvad gør jeg galt? her er min kode: Private Sub Command1_Click() Winsock.Close Winsock.Connect "212.242.249.5", 80 Winsock.SendData Text1.Text & "|" & Text2.Text End Sub
Og det er faktisk det eneste kode jeg har ved min login form...
Lige én ting... Du har sikkert hørt det en million gange... hvordan får jeg mine programmer til at vise sig i min taskbar? og den menu når man trykker ALT + TAB ?
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strData As String With Winsock1 .GetData strData, vbString, bytesTotal End With MsgBox strData End Sub
Her er min kode... Den gør ikk helt som den skal.. Private Sub Winsock_DataArrival(ByVal bytesTotal As Long) Dim strData As String Dim arrSplit() As String Dim strPass As String Dim strUser As String With Winsock .GetData strData, vbString, bytesTotal End With
arrSplit = Split(strData, "|")
strUser = arrSplit(0) strPass = arrSplit(1) Text1.Text = Text1.Text & vbCrLf & strData Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\data\profiles.mdb") Set rs = db.OpenRecordset("tblProfiles") rs.MoveFirst Do While rs.EOF = False If rs!User = strUser And rs!Password = strPass Then Winsock.SendData "You are now logged in!" Text1.Text = Text1.Text & vbCrLf & "Client Logged in" Exit Sub End If rs.MoveNext Loop End Sub
Jeg tænkte på... Min Winsock forbindelse skal jo ikke kun virke i det brugeren logger på... Kan man ikk lægge Winsock i en BAS fil, et modul eller sådan noget, så den kører permanent?
ja nu ved jeg jo ikke hvad du er ved at lave.. udover noget log ind.. men det er da smartest at det hele er i en file ellers kan nogle snyde og lave en fil med samme navn og opsnuse hvad der bliver sendt tilbage for at log ind ;)
hm... Jeg regner med at kryptere password og brugernavn senere... Det bliver forhåbentlig et ret stort program, hvor den hele tiden henter/opdaterer/opretter ting fra/på serveren i DB'en...
Dvs. at programmet skal bruge forbindelsen hele vejen igennem, så spørgsmålet er hvordan jeg sparer min server for at folk opretter en ny forbindelse hver gang at de åbner et nyt vindue.. :-)
sjh, jeg har på fornemmelsen at du er ret dygtig så jeg tænkte på om du vil debugge mit projekt for 100 point? http://frip.dk/cronck/MyProject.rar Det som der er problemet er at Klienten crasher hvis serveren ikke er åben, og det skal den jo ikke, men bare blive ved med at prøve at oprette forbindelsen igen... Og, hvis du åbner 3-4 klienter, imens at serveren er åben, luk den ene klient, åbn en ny klient, og serveren crasher....
Bare glem det.. ser ud til at det meste virker nu :D
Synes godt om
Ny brugerNybegynder
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.