我正在开发一个客户端服务器应用程序,其中服务器为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++为核心语言并具有第一层支持。

07-22 09:33