我需要在至少一个不是 PC 的两个设备之间设计一个基于文本的协议。所以我不能依赖库、正则表达式和其他花哨的工具。这些语言提供的功能通常比BASIC
(if、循环、toString、fromString、固定大小的字符串)所能提供的多一点。
消息通过 TCP/IP 传输。文本编码为 ASCII。
该协议应允许随时发送消息(一个合作伙伴可以连续发送 5 条消息)。
到目前为止我发现的问题:
- 我需要一种将字符流拆分为可能多条消息的方法。
- 由于消息中的某些字段可能具有不同的长度,因此我还需要一种将消息拆分为字段的方法。
- 我需要支持几种消息类型,我想通过发送消息类型字段作为每条消息中的第一个字段来解决这些问题。
到目前为止我的计划:
- 引入像 '\0' 这样的消息分隔符来应对 1。
- 引入像 '\t' 这样的字段分隔符来处理 2。
- 将协议类型作为文本或整数作为第一个字段发送。
样本:
42\t123.456\tsome string\t4\042\t12.456\tsome other string\t5\0
应解释为:
[42 , 123.456 , "some string" , 4], [42 , 12.456 , "some other string" , 5]
我看到的问题:
- 如何处理“转义”分隔符,即包含 '\t' 或 '\0' 的字符串?禁止分隔符(也许从字符 128+ 中选择一些)?
你觉得这个协议怎么样?有没有好的选择?请记住,编程设施非常有限!