【发布时间】:2010-11-06 00:10:57
【问题描述】:
我即将编写一个通过 TCP 流的消息协议。接收者需要知道消息边界在哪里。
我可以发送 1) 固定长度的消息,2) 大小字段,以便接收者知道消息有多大,或者 3) 唯一的消息终止符(我想这不能在消息的其他任何地方使用)。
出于效率原因,我不会使用 #1。
我喜欢#2,但流有可能不同步吗?
我不喜欢第 3 个想法,因为这意味着接收者无法提前知道消息的大小,并且还要求终止符不会出现在消息的其他位置。
对于#2,如果有可能不同步,我是否可以添加一个终止符,或者只要发送方程序发送的内容是正确的,我是否可以保证永远不会不同步?有必要做#2 AND #3吗?
请告诉我。
谢谢, jbu
【问题讨论】:
-
对于选项 #3,查看 字节填充 以了解在消息正文中使用分隔符值的方法。我不是说您应该使用选项#3,只是指出如何使分隔符在字节流中明确。
标签: stream message protocols delimiter terminator