【问题标题】:recv continue without wait sendrecv 继续不等待发送
【发布时间】:2020-09-05 13:29:17
【问题描述】:

我正在使用套接字执行客户端-服务器程序,但是当我从客户端执行接收并且服务器没有发送时,执行将继续。我尝试使用 MSG_WAITALL 标志,但我遇到了同样的问题。 客户:

ssize_t size_recv = recv(socketfd, buffer_rcv, RAW_MESSAGE_SIZE, MSG_WAITALL);
if(size_recv < 0 ){
    log_message(LOG_DEBUG, "Error");
}
else{
    printf("%zd Bytes recv\n", size_recv);
}

我得到 0 个字节的接收。在执行发送之前如何阻止?

【问题讨论】:

  • recv 返回 0 表示套接字已关闭。我们可以看到更多指向recv 的代码吗?此时socket肯定已经连接了?
  • 谢谢,我不知道为什么,但是我关闭了服务器中的套接字,所以我得到了 0 个字节。
  • 表示连接已经被对端关闭了,就是你做的。

标签: c sockets recv


【解决方案1】:

问题是在服务器上我有一个关闭套接字的指令,所以返回是 0 字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多