我使用VB6 + Winsock 制作了一个C/S结构的信息发布系统,如果单个客户端使用的话,可以用。有间隔的单个打开多个客户端,也可以。可是如果使用BAT文件快速的打开多个客户端,就会出错。错误是Winsock收到的消息不正确或丢失。请问如何改正? 服务器端的相关代码: rs.open "****",conn,1,3 
while not rs.eof 
DoEvents 
sckServer(SocketIndex).SendData rs("xxxx") 
rs.movenext 
wend 客户端的相关代码: 
DoEvents 
sckClient.GetData s 这个s,当慢慢一个一个打开客户端的时候,是正常的。可是如果快速大量打开,就会出错。s内容就可能为空。 而且发现,上面的Doevents,不论是少一个或多一个,就连单机使用都会出错。请问该怎么解决?

解决方案 »

  1.   

    bug
    把rs()拆分成4k,4k一个小单元, 每个单元给所有client循环发。
      

  2.   

    是的。 必须doevents
    但是 senddata那一行 改成一个循环(里面4k4k的发,循环中加doevents)即可
      

  3.   

    不用doevents的话,虽然你senddata了,但是数据会暂时放在缓冲区中,而并不是立即就发出去,会造成发送端发送了好几次,接收端才接收到一次,而且数据都连在一起的情况。doevents在这里的作用就是让winsock将数据立即发送出去。