C++ 通过套接字发送字符串

eva*_*ing 1 c++ sockets character-encoding

我正在做一个小型客户端/服务器项目作为 C++ 课程的最后一个项目。我们得到了一些负责通信的类(使用 sys/socket.h),我们基本上可以connection->send(byte)发送一个字节的数据。

假设我有一个要发送的字符串。如何确保从客户端发送到服务器时将“a”解释为“a”,反之亦然?由于标准没有说明 char 默认为无符号或有符号的内容,我不知道如何处理它。

我有一些想法,我可以std::numeric_limits<char>::min()在每一端减去,但我不确定这是一个好的想法。

小智 5

TCP 和 UDP 都不关心字符串的编码。它将始终被解释为字节数组。因此,为了确保正确解释您的字符串,服务器和客户端都必须就通用编码达成一致。

在您的情况下,我将简单地使用c_str()std::string 的方法来发送字符串并通过将接收到的数据解释为const char*(对于 ASCII 字符串)来分配字符串。只要客户端应用程序和服务器应用程序使用相同的字符串库,这就应该有效。