在c中的套接字上发送空终止字符

时间:2015-11-26 16:17:13

标签: c sockets null

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

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

我想也许有办法将它从一种编码转换为另一种编码。我在这方面并不是很聪明。感谢您提供任何帮助/意见。

2 个答案:

答案 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.另一个套接字将收到相同的数组