我正在开发一个客户端服务器应用程序,其中服务器为C++,客户端为Java。
为了进行通信,我使用套接字。现在,我可以通过套接字成功传输字符串:
客户端:
public void serializeAndSendMessage(String msg) {
try {
os.write( msg.getBytes() );
os.flush();
}
catch ( Exception e ) {
e.printStackTrace();
}
}
服务器端:
char recvbuf[DEFAULT_BUFLEN];
int iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (iResult > 0) {
printf("Bytes received: %d\n", iResult);
recvbuf[iResult] = 0; //set the end of the msg
如何传递其他数据,例如Double或Int?是否可以将Double转换为String,然后在C++服务器中将其从char转换回Double?
谢谢
最佳答案
您确实想要像Google ProtocolBuffers这样的东西,它以跨平台和跨语言的方式处理任意数据结构的序列化和反序列化。
还有其他库可以替代ProtoBuf,例如Apache thrift(其中一些库添加了ProtoBuf所缺少的网络)。话虽如此,ProtoBuf是一个不错的选择,因为它已经成熟,可以由Google自己使用,并且以Java和C++为核心语言并具有第一层支持。