将TCP中的Nagle算法关闭,发送方每次发送1024字节(Window中默认每次发送数据小于1460个字节),接收方在OnReceive中也每次接收1024字节,这样会不会出现问题,我是说会不会出现接收方先收到800字节,然后224字节和后面发送方再发的1024字节合在一起被接收

解决方案 »

  1.   

    这个有可能的,因为TCP底层接受到数据也是放在一个大的BUF中,靠你RECV每次要从这个buf取多少数据发送也是这样,你调用send,它其实也是放在TCP发送的一个大BUF中,也有可能不是一次性发出去的。。
      

  2.   

    1460这个数只是你TCP协议包的限制。。
      

  3.   

    关闭Nagle算法就是为了防止每次接收都返回一个响应,然后再发送的情况
      

  4.   

    我是说会不会出现接收方先收到800字节,然后224字节和后面发送方再发的1024字节合在一起被接收,
    应该是会的,这是TCP的粘包问题,下面的文章有解决的办法:
    http://www.vckbase.com/document/viewdoc/?id=1203