拆包粘包的解决方案?

由于底层的 TCP 无法理解上层的业务数据,所以在底层是无法保证数据包不被拆分和重组的,这个问题只能通过上层的应用协议栈设计来解决,根据业界的主流协议可以归纳出以下解决方案:

  1. 消息长度固定,累计读取到长度和为定长LEN的报文后,就认为读取到了一个完整的信息。
  2. 将特殊的分隔符作为消息的结束标志,如回车换行符。
  3. 通过在消息头中定义长度字段来标识消息的总长度。

发表评论

后才能评论