write() - 在C ++中包含'\ 0'的数据

时间:2012-12-09 22:06:42

标签: c++ sockets

我正在尝试使用C ++将一个char数组写入套接字。但是,我想写的数据是原始图像数据,因此包括'\ 0',它表示字符串的终止。无论如何都要发送所有数据,包括'\ 0'?

更新:问题在于使用strlen(),而不是write()

3 个答案:

答案 0 :(得分:4)

send()函数不关心空字节。它发送你告诉它发送的长度。

答案 1 :(得分:1)

send()write()都使用void*缓冲区和要写入的字节数。因此,NUL终结符的问题不会出现在API级别。

就应用程序代码而言,只是不要使用C字符串来表示二进制数据,你会没事的。

答案 2 :(得分:0)

将空字符写入TCP字符串没有问题。

我个人听说没有TCP API可以将其视为任何终止。通常,您指定缓冲区和长度,而其他所有事项都不重要。