jbu*_*jbu 11 message protocols stream delimiter terminator
我即将编写一个通过TCP流的消息协议.接收方需要知道消息边界的位置.
我可以发送1)固定长度的消息,2)大小字段,以便接收者知道消息有多大,或3)唯一的消息终止符(我猜这不能在消息中的任何其他地方使用).
出于效率原因,我不会使用#1.
我喜欢#2,但是流可能会失去同步吗?
我不喜欢#3的想法,因为它意味着接收者不能提前知道消息的大小,并且还要求终结符不会出现在消息的其他地方.
对于#2,如果可能不同步,我可以添加终结符,或者我保证永远不会失去同步,只要发送方程序正确无误即可!是否有必要做#2 和#3?
请告诉我.
谢谢,jbu
我同意 sigjuice。如果您有一个大小字段,则没有必要添加和结束消息分隔符——但是,这是一个好主意。两者都使事情变得更加健壮和更容易调试。
考虑使用标准的netstring 格式,它包括一个大小字段和一个字符串结尾字符。因为它有一个 size 字段,所以可以在消息中使用字符串结束字符。