C ++中的套接字recv

时间:2014-11-06 12:57:32

标签: c++

我的代码如下

char *inBuffer = new char[5];
int recvReturn = recv(Socket, inBuffer, sizeof(inBuffer) - 1, 0);
if (recvReturn <= 0)
{
    m_manager->log("Socket receive error",HIGH_IMPORTANCE);
}
else
{
    std::stringstream ss2;
    ss2<<std::hex;
    for(int i(0);i<5;++i)
      ss2<<(int)inBuffer[i] << ' ';
    m_manager->log(ss2.str(),HIGH_IMPORTANCE);
}

我的日志中的结果是

1 1 6 0 0

1 1 6上的值是正确的,但0 0是错误的。而不是0 0我期望8 9.代码中有什么问题吗?

1 个答案:

答案 0 :(得分:1)

我可以在你的代码中看到2个问题。

  • 您打印5个字符而不确保至少收到5个字符。您应该显示recvBuffer和/或限制写入的字符数。
  • 如果您收到值为1,6,8,9的字节,则它们可打印字符。 0的(ASCII)代码为0x30或48.因此,ss2.str可能会像打印字符串一样奇怪。