发送端程序:
for i=0 to 10
winsock1.senddata i & chr(0)
next接收端程序:
Private Sub WsMain_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
winsock2.GetData Data
list1.additem data
End Sub此时程序预想在接收端应该是在List1中顺序添加0-10的数字,而实际是在list1中添加了012345678910这一个ITEM项,为什么?
所以接受没有分条 你可以单步调试看下Private Sub Timer1_Timer()
Winsock1.SendData i & chr(i)
i = i + 1
If i = 10 Then Timer1.Enabled = False
end sub这样就可以的..............
winsock1.senddata i & chr(0)
next
发送的时候特别有循环的时候希望你以后加上这条语句
for i=0 to 10
winsock1.senddata i & chr(0)
Doevents
next
这样就能确保对方一条一条的接收,像上面那样,对方就可以触发接收事件11 次
Private Sub Form_Load()
WsListen.LocalPort = 7000
WsListen.Listen
End SubPrivate Sub WsListen_ConnectionRequest(ByVal requestID As Long)
WsServer.Accept requestID
End SubPrivate Sub WsServer_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
WsServer.GetData Data
MsgBox Data
End Sub客户端:
Private Sub Form_Load()
WsClient.RemotePort = 7000
WsClient.RemoteHost = "192.168.10.3"
LoadTime = Now()
If WsClient.State = 0 Then
WsClient.Connect
Do Until WsClient.State = 7
If DateDiff("s", LoadTime, Now) >= 5 Then
MsgBox "·þÎñÆ÷Á¬½Óʧ°Ü£¡³ÌÐòÎÞ·¨ÔËÐУ¡", 16, "Á¬½Óʧ°Ü"
End
Exit Do
End If
DoEvents
Loop
End If
If WsClient.State = 7 Then
For i = 0 To List1.ListCount - 1
WsClient.SendData List1.List(i)
DoEvents
Next
End If
End Sub
其中客户端有一个List1,共有五项,分别是赵、钱、孙、李、周等五个姓氏,使用了Doevents后,服务端Msgbox分了两次,一次显示“赵钱”,一次显示“孙李周”,而不是我所期望的分五次显示这五个姓氏。谢谢大家再帮我分析一下。
换用debug.print Data 看看
然后接收端分解
当然成添加节点了呀
Private Sub Form_Load()
WsListen.LocalPort = 7000
WsListen.Listen
End SubPrivate Sub WsListen_ConnectionRequest(ByVal requestID As Long)
WsServer.Accept requestID
End SubPrivate Sub WsServer_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
WsServer.GetData Data
MsgBox Data
End Sub客户端:
Private Sub Form_Load()
WsClient.RemotePort = 7000
WsClient.RemoteHost = "192.168.10.3"
LoadTime = Now()
If WsClient.State = 0 Then
WsClient.Connect
Do Until WsClient.State = 7
If DateDiff("s", LoadTime, Now) >= 5 Then
MsgBox "·þÎñÆ÷Á¬½Óʧ°Ü£¡³ÌÐòÎÞ·¨ÔËÐУ¡", 16, "Á¬½Óʧ°Ü"
End
Exit Do
End If
DoEvents
Loop
End If Dim t1 As Date If WsClient.State = 7 Then
For i = 0 To List1.ListCount - 1
WsClient.SendData List1.List(i)
'*******************发完一次数据停顿2秒再发下一次数据
t1 = Time
Do While 1
DoEvents
If DateDiff("s", t1, Time) >= 2 Then Exit Do
Loop
Next
End If
End Sub
其中客户端有一个List1,共有五项,分别是赵、钱、孙、李、周等五个姓氏,使用了Doevents后,服务端Msgbox分了两次,一次显示“赵钱”,一次显示“孙李周”,而不是我所期望的分五次显示这五个姓氏。谢谢大家再帮我分析一下。