【发布时间】: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 个字节。
-
表示连接已经被对端关闭了,就是你做的。