Avatar billede cronck Nybegynder
20. juli 2004 - 17:50 Der 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...
Avatar billede cronck Nybegynder
20. juli 2004 - 18:02 #1
Det som er det egentlige problem, er at sende data'en og få serveren til at lægge det ind i de 2 nævnte variabler...
Avatar billede sjh Nybegynder
20. juli 2004 - 19:36 #2
(jeg har osse lavet Clienten så den kan Connecte til min Server.)
Hvad Server snakker vi om?

MySQL, MS SQL, HTTP, FTP, IRC... eller et server program du selv har lavet?
Avatar billede cronck Nybegynder
20. juli 2004 - 20:58 #3
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...
Avatar billede cronck Nybegynder
20. juli 2004 - 20:59 #4
Og, ja... Serveren har jeg selv lavet.. :D
Avatar billede sjh Nybegynder
20. juli 2004 - 21:01 #5
brug split()
Avatar billede sjh Nybegynder
20. juli 2004 - 21:03 #6
Private Sub Form_Load()
Dim strData As String
Dim arrSplit() As String
  strData = "Hans|123456"
  arrSplit = Split(strData, "|")

  MsgBox arrSplit(0) 'User
  MsgBox arrSplit(1) 'Pass
End Sub
Avatar billede cronck Nybegynder
20. juli 2004 - 21:22 #7
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...
Avatar billede sjh Nybegynder
20. juli 2004 - 21:30 #8
Du kan ikke sende noget før der er forbindelse...

Private Sub Command1_Click()
  With Winsock1
      .Close
      .Connect "212.242.249.5", 80
  End With
End Sub

Private Sub Winsock1_Connect()
  With Winsock1
      .SendData CStr(Text1.Text & "|" & Text2.Text)
  End With
End Sub
Avatar billede cronck Nybegynder
20. juli 2004 - 21:33 #9
Ahh.. Jeg troede at forbindelsen var klar efter Winsock.Connect... :D
Avatar billede cronck Nybegynder
20. juli 2004 - 21:38 #10
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 ?
Avatar billede sjh Nybegynder
20. juli 2004 - 21:39 #11
så for du din data sådan ;)

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
  With Winsock1
      .GetData strData, vbString, bytesTotal
  End With
  MsgBox strData
End Sub
Avatar billede sjh Nybegynder
20. juli 2004 - 21:42 #12
øhh det gør den da fra starten af.. ( taskbar.. ALT + TAB)
Avatar billede sjh Nybegynder
20. juli 2004 - 21:43 #13
Under Properties
ShowInTaskbar = True
Avatar billede cronck Nybegynder
20. juli 2004 - 21:44 #14
Det er på False som standard her... :D
Avatar billede sjh Nybegynder
20. juli 2004 - 21:45 #15
Naa vel ikke når du starter en nyt project
Avatar billede cronck Nybegynder
20. juli 2004 - 21:48 #16
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
Avatar billede sjh Nybegynder
20. juli 2004 - 21:56 #17
hvad er der lige den ikke vil???
Avatar billede cronck Nybegynder
20. juli 2004 - 21:57 #18
Prøvede at lægge den her linie ind lige efter Private Sub Winsock_DataArrival
    Text1.Text = Text1.Text & vbCrLf & "Client sent data"

Det skriver den ikk engang når jeg trykker på den knap hos klienten...
Her er klienten's kode:
Option Explicit

Private Sub Command1_Click()
  With Winsock
      .Close
      .Connect "212.242.249.5", 80
  End With
End Sub

Private Sub Winsock1_Connect()
  With Winsock
      .SendData CStr(Text1.Text & "|" & Text2.Text)
  End With
End Sub
Avatar billede cronck Nybegynder
20. juli 2004 - 22:07 #19
Ahh... problemet var Private Sub Winsock1_Connect()
Den skal hedde Winsock uden 1'tallet :D
Avatar billede cronck Nybegynder
20. juli 2004 - 23:32 #20
Kan du svare mig på hvorfor mine programmer ikke lukker helt når jeg trykker på krydset oppe i hjørnet? De ligger stadig under Processor i windows?
Avatar billede sjh Nybegynder
20. juli 2004 - 23:34 #21
du køre vel et do..loop et eller andet sted..
Avatar billede cronck Nybegynder
20. juli 2004 - 23:35 #22
Nope...
Men jeg kan huske at jeg har set at andre herinde har haft samme problem, jeg kan bare ikke finde dem.... :D
Avatar billede sjh Nybegynder
20. juli 2004 - 23:40 #23
så har du vel flere formler som ikke bliver lukket..

Private Sub Form_Unload(Cancel As Integer)
Dim element As Object
  For Each element In Forms
    Unload element
  Next
End Sub
Avatar billede cronck Nybegynder
20. juli 2004 - 23:41 #24
Kan det være fordi at den holder den Winsocket connection åben?
Hvad hedder den trigger som bliver udløst når man trykker på krydset oppe i hjørnet?

Forresten... Hvorfor sender du ikke et svar!? :D
Avatar billede cronck Nybegynder
20. juli 2004 - 23:45 #25
Ahh... Det er fordi at jeg skjuler min første form når jeg åbner en anden... Jeg takker mange gange for din hjælp!

Du har fortjent point'ne
Avatar billede sjh Nybegynder
20. juli 2004 - 23:46 #26
;)
Avatar billede cronck Nybegynder
20. juli 2004 - 23:56 #27
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?
Avatar billede sjh Nybegynder
21. juli 2004 - 00:00 #28
hvis det ikke skl virke i dit log ind vindue hvordan vil du så tjekke om user/pass er korrekt ;)
Avatar billede cronck Nybegynder
21. juli 2004 - 00:02 #29
jojo... Der skal det også virke... Men den forbindelse der bliver oprettet der skal virke hele programmet igennem...
Hvordan gør jeg det så smartest?
Avatar billede sjh Nybegynder
21. juli 2004 - 00:08 #30
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 ;)
Avatar billede cronck Nybegynder
21. juli 2004 - 00:11 #31
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.. :-)
Avatar billede cronck Nybegynder
21. juli 2004 - 00:16 #32
Er det en god løsning at lave en skjult form som hele tiden er åben?
Avatar billede sjh Nybegynder
21. juli 2004 - 00:34 #33
ja det kan du jo gøre som du lyster.. bare du husker at få lukket den igen.. :D
Avatar billede cronck Nybegynder
21. juli 2004 - 00:40 #34
Ok... Det skal jeg nok huske... :P
Avatar billede sjh Nybegynder
21. juli 2004 - 00:43 #35
Bare for at samline lidt.. når man logger på MSN åbner den 9 TCP og 1 UDP så den ene du bruger er jo ikke noget ;)
Avatar billede cronck Nybegynder
21. juli 2004 - 17:57 #36
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....

Håber at du vil hjælpe
Avatar billede cronck Nybegynder
21. juli 2004 - 18:00 #37
Glemte lige at sige, hvis du vil og går igang, så skriv venligst ned hvad du ændrer så jeg kan lære af det.. :D
Avatar billede cronck Nybegynder
21. juli 2004 - 18:23 #38
Bare glem det.. ser ud til at det meste virker nu :D
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