vb用winsock做的服务端有时候出现40006错误

来源:百度知道 编辑:UC知道 时间:2024/06/07 19:47:54
我用winsock控件数组做的服务端,一般情况下可以和客户端正常的接收 发送数据,但是有时候服务端会出现“错误 '40006': 所需事物或请求的错误协议或连接状态”的错误,我百度了下知道是因为双方的连接没有正确连接客户端就发送了数据,而我的客户端也是先connect然后senddata的 ,如何有效解决这个问题呢?谢谢

用TCP发送消息.就必须先于对方建立连接,对方必须先同意,才能发送消息

在窗体模块的最上面加上API声明
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

在第一次senddate之前加上:

Dim i As Long
Do Until Winsock1.State = 7 Or i > 600
i = i + 1
DoEvents
Sleep
Loop

If i >= 600 Or Winsock1.State = 7 Then
' 1分钟后,对方仍然未同意,连接超时.
End If

再进行senddate