【问题标题】:What is the best way to communicate binary data in TCP sockets在 TCP 套接字中通信二进制数据的最佳方式是什么
【发布时间】:2012-04-17 05:03:23
【问题描述】:

我正在 c#.net 中开发客户端/服务器应用程序。现在我将选择客户端/服务器数据包中使用的通信机制。我想知道,在套接字上发送和接收数据的最佳格式是什么。

Xml 序列化或 二进制序列化(我正在使用 Marshalling,在 http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspx 上演示)

虽然 Xml 序列化会完成这项工作,但正如我们所知,它会更慢。所以我认为二进制编组将是一个不错的选择。但是在这种技术中,我必须为通信中使用的每个单独的数据包创建大量结构。我需要帮助,请建议它是否是在这个场景中使用的唯一最佳方法,或者是否存在一些更好的方法来实现目标。

【问题讨论】:

  • Xml 速度慢一小时一毛钱。你每小时要花一百美元。很难收支平衡。使用 WCF 或 Google 的协议缓冲区。
  • 这完全取决于您需要在服务器和客户端之间交换的消息数/秒。如果预计流量永远不会达到非常高的水平,那么我同意@HansPassant

标签: tcp c#-3.0


【解决方案1】:

除非 Xml 序列化可以容纳在一帧中(1480 字节),否则二进制编组将发送更少的 IP 数据包。是的,您必须为您的数据包定义结构。

我建议您为所有数据包类型的公共数据包标头定义一个结构,其中包括数据包中的字节数。如果您有不同的数据包类型,您还可以在公共标头中包含数据包类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多