我有一个需求,需要在两个应用程序之间通过电线(TCP二进制)传输信息。其中一个是Java,另一个是C++。我需要一种协议实现来在这两个应用程序之间传输对象。对象类存在于两个应用程序中(已相应映射)。我只需要在一侧使用一些编码方案来保留对象表示,并可以在另一侧解码为完整的对象。
例如,
C++类
Java类
C++ 编码
Java解码
该协议应该提供一些中间对象,以维护对象的表示状态,这样使用反射技术后我可以稍后取回该对象。
例如,
C++类
class Person
{
int age;
string name;
};
Java类
class Person
{
int age;
String name;
}
C++ 编码
Person p;
p.age = 20;
p.name = "somename";
char[] arr = SomeProtocolEncoder.encode(p);
socket.send(arr);
Java解码
byte[] arr = socket.read();
SomeProtocolIntermediateObject object = SomeProtocolDecoder.decode(arr);
Person p = (Person)ReflectionUtil.get(object);
该协议应该提供一些中间对象,以维护对象的表示状态,这样使用反射技术后我可以稍后取回该对象。