【发布时间】:2010-07-06 01:56:32
【问题描述】:
请告诉我如何在 C 中序列化数据(如二进制文件)。以及,我如何通过套接字发送这些序列化数据,以便相应的 Java 客户端可以成功接收。
实际上我想将此二进制文件转换为字节数组,以便可以通过套接字发送。
提前致谢。
【问题讨论】:
标签: java c networking serialization
请告诉我如何在 C 中序列化数据(如二进制文件)。以及,我如何通过套接字发送这些序列化数据,以便相应的 Java 客户端可以成功接收。
实际上我想将此二进制文件转换为字节数组,以便可以通过套接字发送。
提前致谢。
【问题讨论】:
标签: java c networking serialization
对于 C 和 Java 之间的互操作,您可以使用 Google 的 Protocol Buffers(Google 参考实现支持 C++ 和 Java,并且有纯 C 的第三方实现)。
【讨论】:
您是否考虑过使用JSON 等通信格式来代替原始字节RPC
有关为 C 和 Java 提供 JSON 的库的信息(更多信息请访问JSON 站点)
使用 JSON 的优点包括:
在您需要传输对象实例的情况下,JSON 将是理想的选择。但是,如果您真正处理的是平面二进制文件(不是序列化对象),那么 caf 建议的 Google Protocol Buffers 很可能更适合(特别是如果它们是大文件)。
注意: JSON 要求将您的字节内容编码为 BASE64 字符串以进行传输。
【讨论】:
C 中的 send()/recv() 和 java.lang.Socket 都在字节数组上无缝运行。所以,如果你需要的只是发送纯字节数组,没有任何特定于结构的编码,你真的不需要任何序列化。
【讨论】: