我目前正试图通过基于TCP / IP的套接字与外部应用程序通信。 我已经成功build立了与客户端的连接,并收到一些数据。 这个手册在这里指出
在收到这个命令后,客户端必须从守护进程读取一个确认字节。 肯定确认是一个零位的八位位组。 否定确认是任何其他模式的八位字节。
我想发送一个积极的承认,我发送这种方式我的服务器侦听代码是从这里获得
void WriteData(std::string content) { send(newsockfd,content.c_str(),content.length(),0); } WriteData("00000000");
我的问题是,如果我正确地发送这个数据(八位字节的零位)?
更新:
我已经阅读这篇文章,其中指出,发送只允许发送一个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个八位字节(十进制)(假设你的平台是所有现代系统兼容的ASCII码)。
然而, \0
是字符串文字中用来表示空字符(即零八位字节)的转义序列。
在C ++中,字符和字节的概念可以追溯到C的最初几天,而且几乎被烘焙了。