我想要一些关于使用哪种格式通过 TCP 传输数据的建议。目前,我设计了一个带有分隔字符串的简单文本协议。我在想我应该使用已经存在的东西,例如 XML、JSON 或 XMPP?
人们使用哪些数据格式通过 TCP 进行传输?
我想优化速度和吞吐量,但宁愿采用现有标准而不是使用我自己的标准。
在大多数情况下,人们只需声明一个具有可在两端重现的布局的记录并使用它。只有当您有更复杂的需求时,您才必须做比这更花哨的事情。
对于不同长度的字符串,我可能只是将它们实现为一系列长度,然后是长度字节的数据。在 Cish 语言中,您可能可以通过利用空终止符来避免长度。没有比这更复杂的了。
取决于数据类型以及谁在使用您的数据。
如果您正在编写自己的客户端/服务器对,那么可以说最好的格式是某种二进制序列化。它结构紧凑,可通过电线轻松传输,并且可以快速重建。
如果您使用多种语言为许多消费者编写一些东西……那么我会更担心 XML 或 JSON(取决于数据的大小和复杂性)。
XML 更适合处理大量复杂的数据。
JSON 更适合更小、更紧凑的数据。
对于您的数据类型来说,XML 听起来是个不错的选择——那里已经有很多 XML 库(或者您的语言甚至可能内置了 XML 解析)。
基于文本还使得手动调试变得更容易,因此这是远离在线二进制编码的原因之一。