我当前正在尝试通过基于 TCP/IP 的套接字与外部应用程序进行通信。我已成功与客户端建立连接并收到一些数据。本手册here指出
After this command is received, the client must read an acknowledgement octet from the daemon. A positive acknowledgement is an octet of zero bits. A negative acknowledgement is an octet of any other pattern.
我想发送积极的确认,我以这种方式发送 我的服务器监听代码是从here获取的
void WriteData(std::string content)
{
send(newsockfd,content.c_str(),content.length(),0);
}
WriteData("00000000");
我的问题是我是否正确发送此数据(零位八位组)?
更新:
我已阅读这篇文章here 其中指出 send 只允许发送 char* 数组。所以我不确定如何通过套接字发送一个字节。我知道我可以做这样的事情
std::bitset<8> b1 ; // [0,0,0,0,0,0,0,0]
但我不确定如何通过套接字发送它。
最佳答案
尝试
WriteData(std::string("\0",1));
使用你的函数甚至:
const char null_data(0);
send(newsockfd,&null_data,1,0);
直接发送。
<小时/>WriteData("00000000");
实际上会发送 8 个八位字节,每组 48 [十进制](假设您的平台是所有现代系统都兼容的 ASCII)。
但是 \0
是字符串文字中用于表示空字符(即零八位字节)的转义序列。
在 C++ 中,字符和字节的概念之间存在着一种合并(混合在一起),这种合并可以追溯到 C 的早期,并且几乎已经融入其中。
关于linux - 通过套接字发送 NULL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34563947/