winsock.Accept requestID:Accept需要一段时间,所以如果服务器端在Accpet后,马上发数据,而要等一下。比如:
FrmMain.LocalWSock(i).Accept requestID
Sleep 2000 '等待两秒钟再发送数据
FrmMain.LocalWSock(i).SendData "220 Connect Client OK! " & vbCrLf
我反复试了好多次,都是这样。如果不加"Sleep 2000",则另一端的sock.getdata会出错,提示"40006。"(sock.state=6)
FrmMain.LocalWSock(i).Accept requestID
Sleep 2000 '等待两秒钟再发送数据
FrmMain.LocalWSock(i).SendData "220 Connect Client OK! " & vbCrLf
我反复试了好多次,都是这样。如果不加"Sleep 2000",则另一端的sock.getdata会出错,提示"40006。"(sock.state=6)
发完后加上一个这个
DoEvent
我的程序是由服务器端Accept后,马上发数据给Client,则Client端提示Sock状态不正确 (state=6),无法接收数据. 而要等待一会儿,才能发数据给Client,我估计当服务器Accept连接时,客户端得到反馈并正确连接需要时间延迟。
通知Server可以发送数据下来了,不就行了?起码不用等那两秒钟了:)
可以在client设一布尔变量ifover,发送数据开始后,ifover=false
server端接受完数据后,发送一个消息给client,client受到后,ifover=true,
在client只有ifover=true的时候才可以发送。