3

我想要一些关于使用哪种格式通过 TCP 传输数据的建议。目前,我设计了一个带有分隔字符串的简单文本协议。我在想我应该使用已经存在的东西,例如 XML、JSON 或 XMPP?

人们使用哪些数据格式通过 TCP 进行传输?

我想优化速度和吞吐量,但宁愿采用现有标准而不是使用我自己的标准。

4

5 回答 5

5

您可能想查看Google Protocol BuffersApache Thrift

于 2009-09-04T17:31:38.280 回答
0

在大多数情况下,人们只需声明一个具有可在两端重现的布局的记录并使用它。只有当您有更复杂的需求时,您才必须做比这更花哨的事情。

对于不同长度的字符串,我可能只是将它们实现为一系列长度,然后是长度字节的数据。在 Cish 语言中,您可能可以通过利用空终止符来避免长度。没有比这更复杂的了。

于 2009-09-04T17:29:13.947 回答
0

取决于数据类型以及谁在使用您的数据。

如果您正在编写自己的客户端/服务器对,那么可以说最好的格式是某种二进制序列化。它结构紧凑,可通过电线轻松传输,并且可以快速重建。

如果您使用多种语言为许多消费者编写一些东西……那么我会更担心 XML 或 JSON(取决于数据的大小和复杂性)。

XML 更适合处理大量复杂的数据。

JSON 更适合更小、更紧凑的数据。

于 2009-09-04T17:29:22.387 回答
0

您的数据的键/值外观表明JSON可能更易于使用。

优化速度和吞吐量可能在您的应用程序之外更好地处理,OSI 模型中的第 3 层和第 4 层我会冒险。在这些层上投入的一个优化单位可能会比投入到数据结构和编码中的一个单位的努力更优化。

于 2009-09-04T17:32:09.057 回答
0

对于您的数据类型来说,XML 听起来是个不错的选择——那里已经有很多 XML 库(或者您的语言甚至可能内置了 XML 解析)。

基于文本还使得手动调试变得更容易,因此这是远离在线二进制编码的原因之一。

于 2009-09-05T08:49:27.250 回答