0

我有一个简单的 winsock 服务器聊天,这是代码:

Private Sub Form_Load()
Winsock1.LocalPort = 5100
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Winsock1.GetData sData
Text1.Text = Text1.Text & sData
End Sub

我收到来自 ios 应用程序的消息,但无法发送带有“sendData”的消息。

如何向所有客户端发送消息?我需要使用客户端吗?

谢谢。

4

1 回答 1

1

如果您想向多个客户端发送消息,那么最好的方法不是关闭您的侦听winsock1,并使用它来接受请求,而是创建一个新的winsock 控件来接受请求。这样您就可以接受来自多个来源的连接。

例子:

第一次将 winsock1 的属性 Index 更改为 0,以创建一个控件数组。现在所有事件的签名都更改为包含 Index 参数。

Dim NumSockets As Integer

Private Sub Form_Load()
    Winsock1(0).LocalPort = 5100
    Winsock1(0).Listen
End Sub

Private Sub Winsock1_Close(Index As Integer)
    Winsock1(Index).Close
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    NumSockets = NumSockets + 1
    Load Winsock1(NumSockets)                'create a new winsock control
    Winsock1(NumSockets).Accept requestID    'use that one to accept the request
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim vtData As String
    Winsock1(Index).GetData vtData, vbString
    Print vtData
End Sub
于 2013-06-18T14:19:19.323 回答