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

如何在VB6上使用winsock制作的套接字服务器上处理多个客户端?,vb6,winsock,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

我使用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
Private Sub Winsock1\u Close()
“最后敲定康涅西翁酒店
Winsock1。关闭
txtLog=txtLog&“***Desconectado”&vbCrLf
端接头
私有子Winsock1_ConnectionRequest(ByVal requestID尽可能长)
如果Winsock1.State sckClosed,则
Winsock1.Close“Close”
如果结束
Winsock1.Accept requestID
txtLog=“Cliente conectado.IP:&”_
Winsock1.RemoteHostIP和vbCrLf
端接头
私有子Winsock1_数据到达(ByVal ByTestTotal长度)
作为字符串的Dim dat
Winsock1.GetData dat,vbString
txtLog=txtLog&“客户:”&dat&vbCrLf
端接头

解决方案是拥有一个Winsock对象数组,并在运行时创建一个新的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
编辑:以下是一个教程,它可能比我的代码更能帮助您:


它遵循同样的想法。

谢谢@Brad,但是我如何创建Winsock数组?在表单上创建Winsock控件,并将其索引设置为0。这使其成为控制阵列的一部分。