请告诉我如何在C中序列化数据(如二进制文件)。并且,如何通过套接字发送此串行化数据,以便它可以被相应的Java客户端成功接收。序列化C中的数据
其实我想将这个二进制文件转换成字节数组,以便它可以通过套接字发送。
在此先感谢。
请告诉我如何在C中序列化数据(如二进制文件)。并且,如何通过套接字发送此串行化数据,以便它可以被相应的Java客户端成功接收。序列化C中的数据
其实我想将这个二进制文件转换成字节数组,以便它可以通过套接字发送。
在此先感谢。
对于C和Java之间的互操作,您可以使用Google的Protocol Buffers(Google参考实现支持C++和Java,并且第三方实现为普通C)。
你有使用通讯格式考虑如JSON而不是原始字节RPC
有关哪些对C &的Java提供JSON库(更多可用的JSON网站)
使用JSON的优点包括:
如果您需要传输对象实例,JSON将是理想的。如果你真的在处理平面二进制文件(不是序列化的对象),那么caf建议的Protocol Buffers by Google很可能更适合(尤其是如果它们是大文件的话)。
注意: JSON要求将您的字节内容编码为BASE64字符串进行传输。
感谢很多语法,我一定会尝试这个东西。 – user268758 2010-07-07 12:22:03
C和java.lang.Socket中的send()/ recv()都可以在字节数组上无缝地运行。所以,如果你需要的只是发送普通字节数组,而没有任何结构特定的编码,你并不需要任何序列化。
是的,它解决了我的问题。非常感谢。 – user268758 2010-07-07 12:20:57
只要在C中打开套接字,读取文件并将它发送到另一端的java服务器套接字,会不会更简单? (诚实的问题) – OscarRyz 2010-07-06 02:19:44
@OscarRyz:“序列化数据”通常意味着数据具有某种结构,双方必须本地理解。即使你只是传输一个非结构化文件,也可能存在结构化数据 - 例如。文件长度,文件名 - 你也希望被接收方理解。 – caf 2010-07-06 02:31:13
@OscarRyz:当我在Java中使用ObjectInputStream来捕获套接字上的数据时,它抛出了一个StreanCorruptedException,并且可能是由于反序列化数据从C端传输。 – user268758 2010-07-06 02:33:16