JanWong,粘包( 二 )


如:PUSH标志是TCP提供了强制数据立即传送的操作指令 , TCP软件收到该操作指令后 , 就立即将本段数据发送出去 , 而不必等待发送缓冲区满 。缺点:虽然可以避免发送方引起的粘包 , 但关闭了Negle优化算法 , 降低了网络发送效率 , 影响应用程序的性能 , 一般不建议使用 。(2)接收方引起的粘包 , 可通过优化程序设计、精简接收进程工作量、提高接收进程优先级等措施来及时接收数据 , 尽量避免出现粘包现象 。
缺点:只能减少出现粘包的可能性 , 但并不能完全避免粘包 , 当发送频率较高或某个时间段数据包到达接收方较快 , 接收方还是有可能来不及接收 , 导致粘包 。(3)由接收方控制 , 将一包数据按结构字段 , 人为控制分多次接收 , 然后合并 , 通过这种手段来避免粘包 。缺点:应用程序的效率较低 , 对实时应用的场合不适合 。一种比较周全的对策是:接收方创建一预处理线程 , 对接收到的数据包进行预处理 , 将粘连的包分开 。

推荐阅读