【问题标题】:Socket programming - serialization [closed]套接字编程 - 序列化 [关闭]
【发布时间】:2014-03-03 08:25:12
【问题描述】:

我已经阅读了 Beej 的指南,以及我可以在互联网上找到的许多其他资源,但我觉得我在序列化和反序列化方面遗漏了一些东西。我可以通过在服务器和客户端发送/接收的明确结构中硬编码来将其散列,但我想知道是否有任何资源可以帮助我更有效或更一般地序列化这将有助于我在其他程序中重用我的一些序列化代码,而不必为我想要传递的每个数据结构编写定制的序列化函数?

【问题讨论】:

  • The Practice of Programming 有一个不错的通用 C 二进制序列化函数。那是一本纸质书,但代码可能在网上流传。
  • 这本书不贵,所以我会订购它并阅读它。我还将研究这个 Google Protobuf。感谢您的指点(窃笑)。 ;)
  • 我通过nanopb 在 C 代码中使用 protobuf 获得了一些很好的经验。我们正在生产中使用它。
  • 检查Binn 格式。在我测试过的那些中,它更容易在 C 中使用。

标签: c sockets serialization


【解决方案1】:

Google Protobuf 可能对您有用,特别是如果您可能想考虑使用多种编程语言实现的跨平台应用程序。

Protobuf 已经实现了序列化,所以你会得到它。

由于上面的链接是针对 c++ 的,this 是 c 挂件。 但也有许多其他语言的实现,如 Python、PHP、Java 和许多其他语言! 另一个 C Protobuf 库是 nanoPB,感谢 πάντα ῥεῖ 指出这一点。看来这个是稳定的。

另一种方法是使用another serialisation library 序列化和反序列化您的数据。

最后一种可能的方法是自己实现序列化,就像SO question 中描述的那样。

【讨论】:

  • 经过调查,该语言非常专门针对 C++,完全偏离主题。
  • @ciphermagi 这很令人惊讶,因为当您在 Google 上搜索“protobuf for c”时,第一个链接是:code.google.com/p/protobuf-c/ 希望对您有所帮助。
  • 你的意思是那个项目在页面上特别说它不稳定,与大多数Protobuf不兼容,并且没有扩展,实际上大部分甚至没有实现protobuf的过程专为?
  • @ciphermagi 我看不到你把你的信息带到哪里去了。让我引用一下:状态:大部分代码稳定,组没有实现——他们可能永远不会是(因为它们已被弃用。所以据我所知,这是完全可用的。关于扩展,如果你真的需要它们,你可以自己实现它们代码是开源的。
  • 我通过nanopb 在 C 代码中使用 protobuf 获得了一些很好的经验。我们正在生产中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多