Avatar billede cronck Nybegynder
21. juli 2004 - 01:48 Der er 3 kommentarer og
1 løsning

Winsock, hvordan får jeg min server til at have flere forbindelse

Jeg har en server, hvorpå folk kan logge ind med et Klient program som opretter en forbindelse.
Hvis 1 er connected til serveren kan andre ikk komme på... Hvordan løser jeg det problem?

her er min server kode:
Dim strVersion As String
Dim strPort As String
Private Sub Form_Load()
    strVersion = 0.2
    strPort = 80
    Text1.Text = "[" & Time & "] " & "Server Application Launched " & strVersion
    Me.Caption = "Server Application " & strVersion
    Winsock.Close
    Winsock.LocalPort = strPort
    Winsock.Listen
    Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Listening for Clients on port " & strPort
End Sub

Private Sub winsock_ConnectionRequest(ByVal requestID As Long)
    If Winsock.State <> sckClosed Then Winsock.Close
    Winsock.Accept requestID
   
    Me.Caption = "Server [Client Connected]"
    Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Client Connected from " & Winsock.RemoteHostIP
End Sub
Private Sub winsock_Close()
    Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Client Disconnected from " & Winsock.RemoteHostIP
    Winsock.Close
    Winsock.LocalPort = strPort
    Winsock.Listen
    Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Countinue Listening for Clients on port " & strPort
End Sub

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)
        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 "ACTION001"
            Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Client Logged in as " & strUser
            Exit Sub
        End If
    rs.MoveNext
    Loop
    Winsock.SendData "ERROR001"
    Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Invalid login from: " & Winsock.RemoteHostIP
End Sub
Avatar billede cronck Nybegynder
21. juli 2004 - 02:16 #1
Jeg har lige læst at man kan have uendeligt antal forbindelser til serveren med Winsocket hvis man lave Winsock(0).Listen og når en client så requester en forbindelse, laver den Winsock(1), og næste gang Winsock(2)...

Jeg prøvede at lave min kode om til denne metode, men det var jeg vist for klodset til...
Avatar billede Nybegynder
21. juli 2004 - 07:30 #2
Hvis du bruger den samme winsock til at lytte og skabe forbindelse med. Det går ikke.

Prøv dette.

Private Sub winsock_ConnectionRequest(ByVal requestID As Long)
    If Winsock(0).State <> sckClosed Then Winsock(0).Close
      'Opret en ny winsock
      Winsock(index).Accept requestID
   
    Me.Caption = "Server [Client Connected]"
    Text1.Text = Text1.Text & vbCrLf & "[" & Time & "] " & "Client Connected from " & Winsock(index).RemoteHostIP
End Sub

Jeg kan ikke huske hvordan man opretter et nyt element i en objectarray.

Hilsen

Lars
Avatar billede cronck Nybegynder
21. juli 2004 - 16:42 #3
Jeg fik det faktisk selv til at virke, men du får point alligevel... :D
Avatar billede Nybegynder
21. juli 2004 - 17:45 #4
Mange Tak.

Hilsen

Lars
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