epoll recv返回值

时间:2012-03-17 05:52:52

标签: c sockets epoll

我正在使用epoll作为关卡触发。根据{{​​3}},如果recv返回0,则“没有消息可用于接收且对等方已执行有序关闭”。这是否意味着已收到整个请求且另一方已关闭套接字?套接字两端都已关闭?或者只是收到整个请求并且套接字正在等待写入响应?任何帮助将不胜感激。

根据recv(3),听起来如果recv返回0,则连接在另一侧关闭。如果是这种情况,需要在epoll方面做些什么?是否需要通过epoll_ctl调用EPOLL_CTL_DEL以及调用close来完全删除套接字?

1 个答案:

答案 0 :(得分:4)

这意味着您已经读取了连接后发送的所有数据,唯一剩下的就是TCP FIN,这可能是远程完全关闭或者关闭输出的结果。远程。除非你知道对等只有关闭,否则你不能做多少但是关闭套接字,在这种情况下你仍然可以写入套接字。您的应用程序协议确定了所有这些。

TCP中没有请求或响应。只有一个双向字节流。