如何在VB6上使用winsock创建的套接字服务器上处理多个客户端?

时间:2011-01-19 15:32:55

标签: vb6 winsock

我使用winsock在VB6中创建了这个非常简单的聊天应用程序,但是你可以看到它只接受一个连接,我该如何处理多个用户?谢谢!

Private Sub Winsock1_Close()
    ' Finaliza la conexión
    Winsock1.Close

    txtLog = txtLog & "*** Desconectado" & vbCrLf

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

    If Winsock1.State <> sckClosed Then
        Winsock1.Close ' close
    End If

    Winsock1.Accept requestID

    txtLog = "Cliente conectado. IP : " & _
              Winsock1.RemoteHostIP & vbCrLf

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dat As String

    Winsock1.GetData dat, vbString
    txtLog = txtLog & "Cliente : " & dat & vbCrLf

End Sub

1 个答案:

答案 0 :(得分:2)

解决方案是拥有一个Winsock对象数组,并在运行时创建一个新对象。您创建的新对象接受连接请求。

因此,在你的连接请求子中,你将有一个新的套接字:

Dim ConnectionCount as long

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    ConnectionCount=ConnectionCount+1

    Load Winsocks(ConnectionCount)
    Winsocks(ConnectionCount).Accept(requestID)

     txtLog = "Cliente conectado. IP : " & _
          Winsocks(ConnectionCount).RemoteHostIP & vbCrLf

End Sub

修改:这是一个可能比我的代码更有帮助的教程:http://www.devx.com/tips/Tip/5488

它遵循相同的想法。