我现在在做一个系统,有一个服务端和客户端,客户端用C++实现,而服务端用java实现,我定义了一些消息类实现服务端和客户端之间的通信。现在我的设想是客户端需要请求一个信息的时候,它回生成一个特定的消息对象,然后将这个消息对象序列化,再发到服务端,服务端将发过来的消息反序列化成一个消息对象。现在的问题是如果客户端和服务端都是Java或都是C++的话,可以很方便实现序列化,但却是一边是C++,另一边是Java,所以现在想请教一下有没有现成的类库可以实现C++的序列化可以在Java中反序列化呢?

解决方案 »

  1.   

    直接socket通信,发送需要的信息等
      

  2.   

    要么自己定义通信格式,规定对象之间的序列化格式或者用corba之类的模型
      

  3.   

    你都说了啊,分别在客户端和服务端自己实现不就可以了嘛,本质上还是做协议
    ACE的ACE_InputCDR和ACE_OutputCDR可以实现跨平台的序列化操作甚至能发送一个对象,可以参考
    但感觉上实在是没有必要自己开发一个算了
      

  4.   

    ACE好像只是跨平台的C++调用而已,我需要的是跨语言,一个对象在一个用C++开发的程序里序列化并发到一个用JAVA开发的程序上,接收方可以用相同的库给反序列化出来。虽然可以自己定义格式,自己做序列化,不过我想找一下有没有现成的提供跨语言序列化的类库,这样我可以节省一些时间
      

  5.   

    跨平台都能发送一个对象,跨语言就不能发啦后者要简单吧
    呵呵另外把java理解成平台还是比较恰当的,因为它采用的是虚拟机技术啊
    我都说了你自己做个协议就得了,只是表象是序列化而已
      

  6.   

    用Ice可以很简单的实现你的要求。
      

  7.   

    hao
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/