//更新 这件事可以用现有的序列化框架来做 比如 protobuf
一句话来说就是,C++和Java 通过socket进行通信、数据传输,通过发送“字节流”即可。
字节对于C++和java来说是通用的,但是传输的过程有许多问题需要注意,我为了弄清楚这个过程,查了一些资料,做了一些整理。
不了解C++ socket编程,可以看这篇博客:
Linux 下:socket通信(Linux下,C/C++语言):http://blog.csdn.net/giantpoplar/article/details/47657303
Windows下:winsock:http://blog.csdn.net/giantpoplar/article/details/47657317
不了解Java socket编程,可以看这篇博客:
Java socket通信:http://blog.csdn.net/giantpoplar/article/details/47657325
不了解字节数组和基本数据类型的转换,可以看这篇博客
byte[]和 整形、浮点型数据的转换-java代码:http://blog.csdn.net/giantpoplar/article/details/47657333
在服务器向客户端发数据的时候,可能采取以下两种方式
服务器端直接发送struct
如果在编程时在C++端直接发送一个结构体,需要把这个结构体的指针强制转换为char*,通过一个个的字节传输
Msg message;
retVal = send(Client, (char*)&message,sizeof(Msg), 0);
如果采用这种方式,在客户端收到数据后进行解释,需要对 C++对象的内存布局有一个简单的了解,同样,如果你不了解,可以看这篇: 简单C++对象的内存布局: