vb6-将消息发送到winsock服务器聊天室

vb6-将消息发送到winsock服务器聊天室,vb6,winsock,Vb6,Winsock,我有一个简单的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(By

我有一个简单的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”的消息

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


谢谢。

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

例如:

首先将winsock1的属性索引更改为0,以创建控件数组。现在,所有事件的签名都更改为包含索引参数

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

不是完美的,而是指向真正解决方案的指针。您不能一直向阵列中添加更多控件,通常DataArrival事件需要更多的逻辑来处理流碎片。当然,在vb6中实现重叠IO可能会花费大量时间来获得完美的解决方案,但这就是vb6!