python - 可变长度消息的 TCP 传输
问题描述
通过 TCP 正确编码和解析可变长度消息的方法是什么?例如,假设我们要发送一条由字符串文本和二进制文件混合而成的消息。
解决方案
这取决于您在 TCP 之上实现的协议。它的规范会告诉你正确的使用方法。
如果您正在设计协议,通常您只需遵循与您正在做的最接近的现有协议的设计。常见的方案包括:
您将每条消息编码为以换行符结尾的文本。接收方只是读取数据块并在其中搜索换行符。
您将每条消息编码为可变长度块,并在每个块之前发送一个 4 字节整数长度(按网络字节顺序)。接收方读取数据块,当它有 4 个字节时,它确定消息的长度,当它有更多字节时,它“剪断”消息并解析任何剩余的。
您以 XML 或 JSON 等格式对消息进行编码。
推荐阅读
- java - 计算行进距离(不是之间的距离)
- python-3.x - Python3:根据文件内容递归比较两个目录
- python - 如何使用编解码器库将值从烧瓶传递给 html
- mysql - 查找MySql Column中逗号分隔的字符串中是否存在大于数字的值
- python - 是否可以使用 Autograd 计算神经网络输出相对于其输入之一的导数?
- javascript - Twilio 客户端 JS 令牌不允许拨出电话
- sql-server - SQL查询根据条件删除一些项目
- java - Log4J API 不在 Java 程序中打印消息
- javascript - javascript函数中void this的目的是什么
- ios - 从 Firestore Swift 获取文档 ID