我正在编写一个运行良好的 C++ 服务器/客户端应用程序 (TCP),但我很快将不得不编写一个 Java 客户端,它显然必须与它所连接的 C++ 服务器兼容。
至于现在,当服务器或客户端接收到字符串(文本)时,它会循环遍历这些位,直到找到一个 '\0',这标志着字符串的结尾......
这是一个问题:在通过 Java/C++ 而不是 C++/C++ 进行通信时,以这种方式处理字符串仍然是一种好习惯吗?
我正在编写一个运行良好的 C++ 服务器/客户端应用程序 (TCP),但我很快将不得不编写一个 Java 客户端,它显然必须与它所连接的 C++ 服务器兼容。
至于现在,当服务器或客户端接收到字符串(文本)时,它会循环遍历这些位,直到找到一个 '\0',这标志着字符串的结尾......
这是一个问题:在通过 Java/C++ 而不是 C++/C++ 进行通信时,以这种方式处理字符串仍然是一种好习惯吗?
您应该阅读一件事:编码。基本上,可以用不同的方式解释相同的字节序列。只要你用 C++ 或 Java 传递事物,事物的含义就会一致,但是当使用网络(即字节流)时,你必须下定决心。如果有疑问,请阅读并使用 UTF-8。
考虑使用Protocol Buffers或Thrift而不是滚动您自己的协议。