二进制序列化协议

use*_*757 3 java binary serialization codec

我有一个要求,我需要通过2个应用程序之间的线路(二进制over tcp)传输信息.一个是Java,另一个是C++.我需要一个协议实现来在这两个应用程序之间传输对象.Object类存在于两个应用程序中(相应地映射).我只需要在一侧保留一些编码方案,在一侧保留Object表示,并在另一侧解码为完整的Object.

例如,

C++类

class Person
{
   int age;
   string name;
};
Run Code Online (Sandbox Code Playgroud)

Java类

class Person
{
   int age;
   String name;
}
Run Code Online (Sandbox Code Playgroud)

C++编码

Person p;
p.age = 20;
p.name = "somename";
char[] arr = SomeProtocolEncoder.encode(p);
socket.send(arr);
Run Code Online (Sandbox Code Playgroud)

Java解码

byte[] arr = socket.read();
SomeProtocolIntermediateObject object = SomeProtocolDecoder.decode(arr);
Person p = (Person)ReflectionUtil.get(object);    
Run Code Online (Sandbox Code Playgroud)

协议应该提供一些维护对象表示状态的中间对象,以便使用反射我可以稍后返回对象.