请告诉我如何在C中序列化数据(如二进制文件)。并且,如何通过套接字发送此序列化数据,以便相应的Java客户端可以成功接收它。
实际上我想将这个二进制文件转换为字节数组,以便可以通过套接字发送。
提前致谢。
答案 0 :(得分:3)
对于C和Java之间的互操作,您可以使用Google Protocol Buffers(Google参考实现支持C ++和Java,以及普通C的第三方实现)。
答案 1 :(得分:2)
您是否考虑使用JSON等通信格式代替原始字节RPC
有关为C& C提供JSON的库的信息。 Java(JSON网站上有更多内容)
使用JSON的优点包括:
在您需要传输对象实例的情况下,JSON是理想的。但是,如果您真正处理平面二进制文件(不是序列化对象),那么像caf建议的Google协议缓冲区很可能更适合(特别是如果它们是大文件)。
NB: JSON要求将您的字节内容编码为BASE64字符串以进行传输。
答案 2 :(得分:0)
C和java.lang.Socket中的send()/ recv()都在字节数组上无缝运行。因此,如果您需要的只是发送普通字节数组,而不需要任何特定于结构的编码,那么您实际上并不需要任何序列化。