TCP粘包/拆包

2019-08-27  本文已影响0人  刘一一同学

TCP是“流”协议,所谓“流”协议,就是没有界限,没有分割的一串数据。TCP会根据缓冲区实际情况进行划分,一个完整的包可能会拆分成多个包进行发送,也有可能把多个小包封装成一个大的数据包发送,这就是TCP粘包/拆包。

发生原因

解决办法

  1. 设置定长消息,服务端每次读取既定长度的内容作为一条完整消息。
  2. 设置消息边界,服务端从网络流中按消息编辑分离出消息内容。
  3. 使用带消息头的协议、消息头存储消息开始标识及消息长度信息,服务端获取消息头的时候解析出消息长度,然后向后去读该长度的内容。
上一篇 下一篇

猜你喜欢

热点阅读