本帖最后由 abcbuzhiming 于 2013-04-06 16:53 编辑
我做了个这样的试验,接收端设置了一个长度只有5的char缓冲区,然后从发送端发超过这个长度的字符串过来,于是得到以下情况。发送“1”
得到“1”发送“123456789”,结果是分两次接收到
“12345乱码”
“6789乱码”发送"123451234512345",分三次接收到
"12345乱码"
"12345乱码"
"12345乱码"我后来发现只要发3个以上的字符就会跟着乱码,而且乱码的内容看上去每次都一样,请问这个乱码的内容到底是啥呢?tcp的机制切割了字符串后给切割结果字符串尾巴加上什么?还是说,不加任何东西?

解决方案 »

  1.   

    分次数接受是怎么实现的?
    数据包长度超过网络所容许的最大传送单元(MTU),这是需要数据报分片。
    memset();
      

  2.   

    tcp没有加什么,是你程序问题。
      

  3.   

    我用的是windows下的socket,设置了一个自定义消息,当有数据到达消息时,就用缓冲区接收数据,我想和mtu没关系,因为我发送的字符串最长的才15个字母,远远小于mtu的1500
    我是故意把缓冲区弄到这么小看会发生什么情况的