Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试将 char 数组写入 C++ 中的套接字。但是,我希望写入的数据是原始图像数据,因此包含 '\0',它表示字符串的终止。无论如何要发送所有数据,包括'\ 0'?
更新:问题在于使用strlen(),而不是write()
strlen()
write()
send() 函数不关心空字节。它发送您告诉它发送的长度。
两者都send()取write()一个void*缓冲区和要写入的字节数。因此,在 API 级别不会出现 NUL 终止符的问题。
send()
void*
就应用程序代码而言,不要使用 C 字符串来表示二进制数据,就可以了。
将空字符写入 TCP 字符串是没有问题的。
我个人听说没有任何 TCP API 会将其视为任何事物的终止。通常,您指定缓冲区和长度,其他一切都无关紧要。