winsock 聊天程序,只能给最后一个发送信息?

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:34:45
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'On Error Resume Next
Dim strData As String
Winsock1(Index).GetData strData
'MsgBox "开始" & Index
For i = 1 To 5
'Me.Caption = Me.Caption & isWinCount(i)
'Sleep 3000
'MsgBox isWinCount(i)
If Not isWinCount(i) Then
'MsgBox i
Winsock1(1).SendData "D" & strData
'Winsock1(2).SendData "D" & strData
'Winsock1(3).SendData "D" & strData
Winsock1(i).SendData "D" & strData
End If
Next
End Sub

在有的机器上无法应用FOR循环来给每一个非空闲的用户发送信息,而只能给最后一个,当指导定三个时也只能给最后一个发送信息。
但是如果加上一个MSGBOX它却是行的。
请高手支招。谢谢。
加上过Sleep不行,延时3秒都不行。
只能MSGBOX才行的。

中间加个DoEvents就行了
Winsock1(1).SendData "a"
DoEvents
Winsock1(2).SendData "a"
DoEvents
Winsock1(3).SendData "a"

可能是资源释放的问题,用了个msgbox后 Winsock1(i).SendData 释放了某个被占用的资源。

可能是时间的问题吧,建议你在所有发送信息的前面加上Sleep函数让它暂停一下再运行