假设您有一个用于在TCP或UDP流上发送信息的规范,并且您有一个字节序列,您接收的字节序列用STX和EOT字节分隔。例如,您如何处理实际数据中出现的EOT字节?我认为这是可能的:消息中的大多数字节以定义的顺序表示数字(即它不仅仅是字节形式的ascii文本),因此EOT是字节0x04,这是数据中可能出现的数字。规范还不清楚:我是否应该始终关注EOT的最后一次出现并忽略它们之间的那些?我见过的其他类似规范甚至可以在同一条TCP / UDP消息中处理多条消息:例如STX some_data EOT STX more_data EOT在一条TCP / UDP消息中。在这种情况下,你不能只看最后一个EOT,因为它实际上是2个单独的消息。你做某种形式的逃避吗?
这种事情通常如何处理?我在谷歌上找不到任何东西,但也许我没有使用最好的搜索词。
答案 0 :(得分:3)
“通常”协议应该设计得很好,以便消息不包含分隔符,使用转义机制来包含分隔符,或者具有已知长度,以便您知道消息的结束位置而不必依赖在分隔符上。
如果消息是固定大小的整数,例如,您将知道整数中遇到的EOT不是分隔符。