用C语言序列化数据

时间:2010-07-06 01:56:32

标签: java c networking serialization

请告诉我如何在C中序列化数据(如二进制文件)。并且,如何通过套接字发送此序列化数据,以便相应的Java客户端可以成功接收它。

实际上我想将这个二进制文件转换为字节数组,以便可以通过套接字发送。

提前致谢。

3 个答案:

答案 0 :(得分:3)

对于C和Java之间的互操作,您可以使用Google Protocol Buffers(Google参考实现支持C ++和Java,以及普通C的第三方实现)。

答案 1 :(得分:2)

您是否考虑使用JSON等通信格式代替原始字节RPC

有关为C& C提供JSON的库的信息。 Java(JSON网站上有更多内容)

  1. C JSON implementation上的堆栈溢出:
  2. JsonGlib(上面链接中引用的GNOME C JSON库)
  3. JSON in Java
  4. 使用JSON的优点包括:

    1. 语言独立性
    2. 易于机器解析&产生
    3. 人类易于读写(协议缓冲区不提供此功能)
    4. 在您需要传输对象实例的情况下,JSON是理想的。但是,如果您真正处理平面二进制文件(不是序列化对象),那么像caf建议的Google协议缓冲区很可能更适合(特别是如果它们是大文件)。

      NB: JSON要求将您的字节内容编码为BASE64字符串以进行传输。

答案 2 :(得分:0)

C和java.lang.Socket中的send()/ recv()都在字节数组上无缝运行。因此,如果您需要的只是发送普通字节数组,而不需要任何特定于结构的编码,那么您实际上并不需要任何序列化。