您应该为什么是 json 有效负载而什么不是,开发一个协议。因此,例如在 tcp/ip 套接字上,您将编写一个开始字符,然后是 json 有效负载,结束字符。这样,您在套接字上的读取就知道消息何时开始和结束。现在,对于想要处理多个 json 有效负载的特殊情况,您将需要一个分隔符。
所以选择你的开始、结束和分隔符由你决定。您可以使用许多字符。查看 ascii/Hex 表以获得一些选择。但是,最好坚持使用不可打印的字符。否则,您会遇到有效负载可能包含这些字符的情况。
如果发生这种情况,您将需要为转义序列开发另一组字符。这意味着一旦您定义了开始、结束和分隔符,这些字符在有效负载中是非法的,并且必须由发送端的转义序列替换。这也意味着接收方必须将这些转义序列转换回正确的字符,以便有效负载可以返回到初始状态。
因此,例如,您可以将协议定义为。
[begin] = 0x02 // Hex for Start of text
[end] = 0x04 // Hex for end of end of transmission
[separator] = 0x03 // Hex for end of text
or
[begin] = 0x0B // Hex for Vertical Tab
[end] = 0x1C // Hex for file separator
[separator] = 0x1E // Hex for record separator
然后通过 tcp/ip 套接字(线路)的消息看起来像(其中.......是消息之间的时间)
[begin][json payload][separator][end].......[begin][json payload][seperator][json payload][separator][json payload][separator][end].......
因此,您必须编写代码以在线读取,直到找到开始为止。然后存储有效负载,直到找到分隔符。然后如果分隔符之后的下一个字符不是结束宪章循环并存储下一个有效载荷。
我还建议在谷歌上搜索 MLLP(最小低级协议)。