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)

解决方案 »

  1.   

    用这个
    发完后加上一个这个
    DoEvent
      

  2.   

    用DoEvent可以解决服务器端同时向多个客户端发送数据堵塞的问题
      

  3.   

    晕~~~~~~等两秒?你的通讯程序实时性要求不高啊!呵呵你可以在Client端的Connect事件里发送数据,不必等啊!
      

  4.   

    to :heng_s(渣渣)
        我的程序是由服务器端Accept后,马上发数据给Client,则Client端提示Sock状态不正确 (state=6),无法接收数据. 而要等待一会儿,才能发数据给Client,我估计当服务器Accept连接时,客户端得到反馈并正确连接需要时间延迟。
      

  5.   

    可能我没说清楚,你的意思是说,你在Client端的Connect事件里随便发送一个消息给Server,
    通知Server可以发送数据下来了,不就行了?起码不用等那两秒钟了:)
      

  6.   

    同意用doevents
    可以在client设一布尔变量ifover,发送数据开始后,ifover=false
    server端接受完数据后,发送一个消息给client,client受到后,ifover=true,
    在client只有ifover=true的时候才可以发送。