关于winsock控件的问题

zcs阿怪 2013-09-16 04:12:19
Dim intMax As Integer
Dim portnum As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
portnum = 1234
intMax = 0
WB1(0).LocalPort = portnum
WB1(0).Listen
End Sub
Private Sub WB1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load WB1(intMax)
WB1(intMax).LocalPort = 0
WB1(intMax).Accept requestID
MsgBox WB1(intMax).RemoteHostIP
End If
End Sub
Private Sub Timer1_Timer()
Text2.Text = WB1(WB1.UBound).State
Text3.Text = intMax
End Sub

Private Sub Command1_Click()
For i = 0 To WB1.UBound
If (WB1(i).State = 7) Then
WB1(i).SendData ("5")
End If
Next i
End Sub

Private Sub Command3_Click()
For i = 0 To WB1.UBound
If (WB1(i).State = 7) Then
WB1(i).SendData ("1")
'Sleep 20
End If
Next i
End Sub
我用winsock数组进行通信,实现服务器与多个客户端连接通信,当多个客户端连接成功以后,点击按钮却只有最后一个连接的客户端能收到数据,当把这个最后的客户端关掉以后,倒数第二个连接的客户端就能接收数据,并且是前面发送的数据合并到一条发送过来了,再点击发送,接收正常。但是还是只有这一个能接收数据。单步调试的情况下都能正常接收,开始以为是sendData之间时间间隔太短,但是加了延时还是不能解决。
因为在整个过程中客服端 可以离线,而且上线连接的顺序不能确定,所以我就采用的想全部客户端发送同样的数据,然后在客户端做判断处理。如果能绑定IP发送更好,就不用向全部的客户端都发送一次数据了,要怎么实现?
...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcs阿怪 2013-09-16
  • 打赏
  • 举报
回复
但现在的问题是,如果我不向全部的客户端发送数据,而是向某个指定IP地址的客户端发送一个数据,注意:每个客户端与服务端的链接顺序是不固定的,而且客户端可以离线,并且还能再次链接的时候,但是端口由系统自动分配。这个功能要怎么实现?
zcs阿怪 2013-09-16
  • 打赏
  • 举报
回复
已经解决 加个doevents就可以了

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧