异步发送小于1024个字节的文本时候
socket.BeginSend(data, 0, data.Length, 0, new AsyncCallback(sendData), socket);
个人理解是,每BeiginSend一次,就产生一个线程.
那如果我要发送一个大文本,字节数可能是1024的倍数,我所考虑的是使用while语句去实现.这个时候我个人认为有个问题,就是在服务器另外一端接收的时候,可能存在这样的情况.现以例子说明:
存在A,B两端,A给B发数据data1,data2,假设它们各有3072个字节,采用循环语句必须给循环三次,那有可能发送的顺序是A1,B1,A2,B2,B3,A3.
这样B在接收的时候就比较乱了.
是不是要采用ManualResetEvent来控制下?防止发送的时候出现上述情况?

解决方案 »

  1.   

    TCP发送保证了时序,异步也是能保证的。
    所以只要你调用发送的时序正确,那么接收的时序也是正确的。
      

  2.   

    你比如我点发送A的数据时候,开发发送A1,但是这个时候我也点了发送B的数据,他们两者线程不同,如何保证发送时间对于A或者B是连续的?
      

  3.   

    TCP 协议本身就是一个面向连接的协议MSDN 的原话Provides sequenced, reliable, two-way, connection-based byte streams with an out of band (OOB) data transmission mechanism