将数据从C传递到Java

时间:2008-11-11 21:30:35

标签: java c serialization

在C服务器与Java applet之间传递数据的最佳方法是什么?目前,它是通过使用缓冲区并使用memcpy将字节复制到它来完成的,但是如果对象发生了变化,我必须查找它被发送到applet的每个实例并将其更改。

有没有更好的方法将对象传递给java?你会怎么做?

编辑说明:它只是从C服务器到Java applet,没有java servlet。 Applet传递给C服务器的唯一内容是一个十六进制数字,表示要采取的操作

3 个答案:

答案 0 :(得分:4)

您可能需要查看Protocol Buffers

它们允许您定义结构化数据,然后生成用于以任何支持的语言读取和写入消息的代码。唯一的问题是我认为他们现在只支持C ++,不过我知道直接C实现有兴趣。

答案 1 :(得分:1)

我会在两个应用程序之间打开一个套接字连接。您可以将对象序列化为一个字节数组,并让Java servlet将其反序列化为具有相同值的Java对象。这样,如果类定义发生变化,您只需要在两个地方更改代码。

答案 2 :(得分:1)

我会将对象序列化为C端的XML或google protobuf,并使用单个反序列化器在applet端对它们进行反序列化。即没有多于一个进行反序列化的类。使用户对序列化进行版本化,并且如果尝试读取的版本不向后兼容,则执行反序列化的对象将引发异常。在整个代码中进行序列化和反序列化将是一种不好的做法。