粘包大家是怎么解决的?保持连接是需要设置什么吗?

解决方案 »

  1.   

    我一般使用自定的格式,能够正确解析出想要的数据。关于粘包的问题讨论,推荐一看一下这个:http://topic.csdn.net/t/20040627/16/3126287.html
      

  2.   

    我一般使用自定的格式,能够正确解析出想要的数据。关于粘包的问题讨论,推荐一看一下这个:http://topic.csdn.net/t/20040627/16/3126287.html
      

  3.   

    发送方在发送包的时候,在固定位置标明自己数据的长度
    例如 0x00 0x03  0x77
    前两位说明包的总长度是3位  所以只取buffer的前三位 这种用法非常常见另外,也可以在包的末尾加标志,例如回车加换行
    读的时候,寻找第一个末尾标志,之后的内容舍弃
      

  4.   

       可采取以下几种措施。一是对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满;二是对于接收方引起的粘包,则可通过优化程序设计、精简接收进程工作量、提高接收进程优先级等措施,使其及时接收数据,从而尽量避免出现粘包现象;三是由接收方控制,将一包数据按结构字段,人为控制分多次接收,然后合并,通过这种手段来避免粘包。
    参考:http://blog.csdn.net/michelsn/archive/2008/01/02/2009894.aspx