【问题标题】:send data struct over network between C/C++ server, C/C++ and C# clients在 C/C++ 服务器、C/C++ 和 C# 客户端之间通过网络发送数据结构
【发布时间】:2011-05-28 14:52:20
【问题描述】:

我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。将有许多不同的类继承公告。我的问题是通过网络将这些类发送给客户端

我想也许我应该使用 iovec。但是我不知道C#中是否有与iovec相对应的东西。

这个想法是: 我将发送一个带有 writev 的结构,客户端将使用 readv 并从套接字读取数据,就像它是一个通知类一样,检查接收到的结构中的 uint16 变量以推断出确切的类型并使用 apprioprite iovec/ 读取其余数据阅读。

C# 可以将整个对象作为数组发送,但如何在 C/C++ 中解释它?

我希望 C/C++ 和 C# 客户端都使用相同的协议,但这是我第一次设计协议,我不确定我的所有想法是否能一起工作。

任何提示将不胜感激。

【问题讨论】:

    标签: c# c++ network-programming


    【解决方案1】:

    不要试图用结构来定义你的协议。

    定义公告的格式,即什么字节以什么顺序构成一个公告,然后定义多个公告如何按顺序传输。

    一旦定义了这种有线格式,您就可以使用每种编程语言中最合适的编程语言结构、库和框架来实现解析器和编写器。

    protobuf 就是一个很好的例子:format specificationC++, Java, Python implementation.NET implementation

    【讨论】:

      【解决方案2】:

      这个问题有点混乱,但我感觉你可能对Protocol Buffers 感兴趣,因为它可以有效地序列化数据并通过网络传输。

      【讨论】:

        【解决方案3】:

        在序列化方面有多种选择。 parashift.com 上的这个常见问题解答详细讨论了序列化/反序列化:http://www.parashift.com/c++-faq-lite/serialization.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-10
          • 2017-08-29
          • 1970-01-01
          • 2018-09-09
          相关资源
          最近更新 更多