在用winsock通信的过程中发现当一端连续发出信息包时,接收一方经常将几条信息包合为一条信息。协议为TCP,发送和接收数据都是用字节数组,其中发送端用了SendComplete事件来控制发送,有何解决办法。

解决方案 »

  1.   

    senddate "kjkj"
    doevents
    senddate "kjkj"
    doevents
      

  2.   

    定义消息包的头部结构,接收方按消息包头来分析接收到的数据。用Doevents是不管用的。楼主现在只发现了接收一方经常将几条信息包合为一条信息,改天楼主还会发现接收一方收到的是 几条信息+某条信息的部分 这种情况呢。
      

  3.   

    你可以用一些特殊字符来分隔数据包。例如,包结束时加上回车。接收端可以用 Split 函数分割数据。
      

  4.   

    发送完一条信息后,后面必须加一个doevents,否则就会出现楼主的情况。如果用户并发多的情况下,后果严重,甚至造成信息混乱。服务端的程序很重要,另外VB属于单线程的开发环境,建议采用VC多线程处理方式,在VB中使用队列的方式解决,也不尽如人意。VB无法完成大型C/S模式通信开发的,1000人还可以!