我即将编写一个通过 TCP 流的消息协议(protocol)。接收者需要知道消息边界在哪里。
我可以发送 1) 固定长度的消息,2) 大小字段以便接收者知道消息有多大,或者 3) 一个唯一的消息终止符(我想这不能在消息的其他任何地方使用)。
出于效率原因,我不会使用 #1。
我喜欢#2,但是流有可能不同步吗?
我不喜欢想法#3,因为这意味着接收者无法提前知道消息的大小,并且还要求终止符不会出现在消息的其他地方。
使用#2,如果有可能不同步,我可以添加一个终止符还是我保证永远不会失去同步,只要发送方程序发送的内容是正确的?是否有必要做 #2 和 #3?
请告诉我。
谢谢,
吉布
最佳答案
您使用的是 TCP,数据包传递是可靠的。因此,连接要么断开,超时,要么您将阅读整条消息。
所以选项#2 是可以的。
关于stream - 编写流协议(protocol) : Message size field or Message delimiter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1046637/