首页 文章

epoll recv返回值

提问于
浏览
2

我正在使用epoll作为关卡触发 . 根据recv(3),如果 recv 返回 0 "no messages are available to be received and the peer has performed an orderly shutdown" . 这是否意味着已收到整个请求且另一方已关闭套接字?套接字两端都已关闭?或者只是收到整个请求并且套接字正在等待写入响应?任何帮助将不胜感激 .

根据What value will recv() return,听起来如果 recv 返回 0 ,则连接在另一侧关闭 . 如果是这种情况,需要在epoll方面做些什么?是否需要使用 EPOLL_CTL_DEL 调用 epoll_ctl 并调用 close 来完全删除套接字?

1 回答

  • 4

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

    在TCP中没有请求或响应这样的事情 . 只有一个双向字节流 .

相关问题