linux - 通过套接字发送 NULL 数据

标签 linux sockets c++11

我当前正在尝试通过基于 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/

相关文章:

PHP-Build - 构建 PHP 5.3.28 错误

c++ - 函数包装器初始化在 C++11 中如何工作?

c++ - 初始化容器中对象的正确方法/模式

python套接字Windows 10连接超时

PHP/Go 套接字通信

c++ - 这种初始化语法在即将到来的 c++0x 标准中有效吗?

linux - 适用于非程序员的灵活 CMS

java - 在 Java 中完成的 Linux 命令输入

linux - rhel 5.3 中 dovecot 中的 pop 和 imap 上的 ssl

从其他线程调用 FD_SET,select 仍然阻塞