我正在尝试将一个带有空终止字符的字符串发送到另一个连接。
现在我不是傻瓜,我知道一个字符串会停在该字符处,但有没有办法将字符串发送到这样的套接字,“Test \ x00AFTERNULL \ x00 \ r \ n”。
我想也许有办法将它从一种编码转换为另一种编码。我在这方面并不是很聪明。感谢您提供任何帮助/意见。
答案 0 :(得分:4)
发送套接字与字符串中间是否为空无关,因为send()
将发送特定大小的缓冲区。
此缓冲区中间可以包含任意数量的零。您可能已使用strlen()
来获取字符串的大小并在send()
中使用它,这会导致缓冲区长度不正确并丢失部分数据。
你可以这样做(例如非常简单):
char buf[] = "Test\x00AFTERNULL\x00\r\n";
//'s' is socket descriptor
send(s, buf, sizeof(buf), 0);
答案 1 :(得分:0)
通过套接字使用字节数组发送和接收数据,而不是字符串。 例如:创建数组:{' T',' E'' S'' T',0,' A&# 39;},通过套接字发送,leng为6.另一个套接字将收到相同的数组