繁体   English   中英

C ++中的套接字接收

[英]Socket recv in 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错误。 我期望的是8,而不是00。代码中是否有错误?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM