在c中通过套接字发送空终止字符

Spe*_*les 0 c sockets null

我正在尝试将内部带有空终止字符的字符串发送到另一个连接。

现在我不傻,我知道字符串会停在该字符处,但是有没有可能的方法将字符串发送到像这样的套接字“Test\x00AFTERNULL\x00\r\n”。

我在想也许有一种方法可以将其从一种编码转换为另一种编码或其他编码。我在这方面不太聪明。感谢您的任何帮助/意见。

Afs*_*hin 5

通过套接字发送与字符串中间是否为 null 无关,因为send()将发送特定大小的缓冲区。

该缓冲区中间可以有任意数量的零。您可能曾经strlen()获取字符串的大小并使用它,这会send()导致缓冲区长度不正确并丢失某些数据。

例如,您可以这样做(非常简单):

char buf[] = "Test\0AFTERNULL\0\r\n";
//'s' is socket descriptor
send(s, buf, sizeof(buf), 0);
Run Code Online (Sandbox Code Playgroud)