c ++数据数组,0x00字符

时间:2012-10-06 18:30:03

标签: c++ null character byte winsock

我正在尝试使用winsock通过套接字发送一些数据。我遇到的问题是我的数据(实际上是一个char数组)可能包含一些零,但char 0x00表示空字符,所有后面的字符都被剪切,因为它代表终止字符。有没有人知道如何解决这个问题?我可以使用哪种替代方案?

我想要做的是使用winsock发送字节,这可能代表整数,字符数组或其他东西。接收部分将正确处理阅读,但这不是本文的关注点。

2 个答案:

答案 0 :(得分:1)

我想你可能会这样做: `

char s [100];

//用s

做事

发送(sock,s,strlen(s),flags); `

strlen通过计算字符串的数量来找到字符串的长度,直到找到NULL(0)。

答案 1 :(得分:0)

在数据流中输入前两个字节,即要发送的缓冲区的长度。 然后发送那么多字节。

在另一端,读取两个字节,然后你就知道应该有多少字节。

可让您解决此问题。

也是google网络字节顺序。有一些方便的函数调用,使便携性变得容易。