c++中的套接字recv
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
1 1 6上的值是正确的,但0 0是错误的。我期望8 9而不是0。代码中有什么错误吗?
我可以在您的代码中看到两个问题。
- 您打印了5个字符,却没有确保收到至少5个字符。您应该显示
recvBuffer
和/或限制写入的字符数 - 如果接收到值为1、6、8、9的字节,则它们是而不是可打印字符。
0
的(ASCII)码是0x30
或48。所以ss2.str
作为一个可打印的字符串可能很奇怪
相关文章:
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 在 Linux 中关闭 UDP 套接字后,recv 不会返回
- 为什么套接字中的 recv() 函数不返回任何内容?
- TCP套接字(客户端-服务器)recv()返回-1值
- C++中TCP套接字的recv函数
- 仅通过建立一次TCP连接将Recv从客户端发送到服务器套接字
- 为什么 sys 套接字 recv 函数不填充数据但返回字节长度?
- Linux 套接字 recv 返回 -1,errno 110 连接超时
- 如何使用 recv 或 C++ 中的读取功能从 tcp 套接字读取大请求
- Unix 套接字挂在 recv 上,直到我在任何地方放置/删除断点
- send()和recv()套接字参数
- recv套接字中的前几个字节,以确定缓冲区大小
- 是否可以将套接字设置为仅针对recv()函数的非阻塞套接字
- setsockopt() 在设置大套接字 recv 缓冲区时不返回错误
- c++中的套接字recv
- 由于PROTOBUF服务器中的字符串数据类型变量和客户端通过cpp中recv端的套接字进行通信,因此正在获取segfau
- 套接字发送数据,但 recv 程序无法正常工作
- UDP套接字是否将接收到的数据划分为不同的消息,或者recv是否同时读取尽可能多的数据
- 如果cpp-linux中的套接字fd超过1024,则recv失败