Java 用C语言序列化数据

Java 用C语言序列化数据,java,c,networking,serialization,Java,C,Networking,Serialization,请告诉我如何在C中序列化数据(如二进制文件)。我如何通过套接字发送这些序列化数据,以便相应的Java客户机能够成功接收这些数据 实际上我想把这个二进制文件转换成字节数组,这样就可以通过套接字发送 谢谢。 < P> C++和java之间的交互,可以使用谷歌(谷歌参考实现支持C++和java,还有第三方实现纯C)。 有关为C&Java提供JSON的库的信息(更多信息可在网站上获得) 以下位置上的堆栈溢出: (上面链接中引用的GNOME C JSON库) 使用JSON的优点包括: 语言独立性 易于机

请告诉我如何在C中序列化数据(如二进制文件)。我如何通过套接字发送这些序列化数据,以便相应的Java客户机能够成功接收这些数据

实际上我想把这个二进制文件转换成字节数组,这样就可以通过套接字发送


<>谢谢。

< P> C++和java之间的交互,可以使用谷歌(谷歌参考实现支持C++和java,还有第三方实现纯C)。 有关为C&Java提供JSON的库的信息(更多信息可在网站上获得)

  • 以下位置上的堆栈溢出:
  • (上面链接中引用的GNOME C JSON库)
  • 使用JSON的优点包括:

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


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

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

    在C中打开套接字,读取文件并将其发送到另一端的java服务器套接字不是更简单吗?(诚实的问题)@OscarRyz:“序列化数据”通常意味着数据具有某种结构,双方都必须理解这种结构。即使你只是在传输一个非结构化的文件,也可能有结构化的数据围绕着它-例如,文件长度,文件名-您也希望被接收端理解。@OscarRyz:当我在Java中使用ObjectInputStream捕获套接字上的数据时,它抛出了StreanCorruptedException,可能是因为反序列化的数据从C端传输。@guptamukul:这是因为您试图接收Java对象,但您并不是从C端发送Java对象。@OscarRyz:谢谢您解决了我的疑问,实际上我是从C端发送数据,并试图通过ObjectInputStream接收数据,它给出了StreamCorruptedException。多亏了大量语法,我一定会尝试这件事。