首页 > 解决方案 > 可变长度消息的 TCP 传输

问题描述

通过 TCP 正确编码和解析可变长度消息的方法是什么?例如,假设我们要发送一条由字符串文本和二进制文件混合而成的消息。

标签: pythontcpclient-server

解决方案


这取决于您在 TCP 之上实现的协议。它的规范会告诉你正确的使用方法。

如果您正在设计协议,通常您只需遵循与您正在做的最接近的现有协议的设计。常见的方案包括:

  1. 您将每条消息编码为以换行符结尾的文本。接收方只是读取数据块并在其中搜索换行符。

  2. 您将每条消息编码为可变长度块,并在每个块之前发送一个 4 字节整数长度(按网络字节顺序)。接收方读取数据块,当它有 4 个字节时,它确定消息的长度,当它有更多字节时,它“剪断”消息并解析任何剩余的。

  3. 您以 XML 或 JSON 等格式对消息进行编码。


推荐阅读