我正在使用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 回答
这意味着您已经读取了连接后发送的所有数据,唯一剩下的就是TCP FIN,这可能是远程完全关闭或远程输出关闭的结果 . 除非您知道对等只有关闭,否则您不能做多少但是关闭套接字,在这种情况下您仍然可以写入套接字 . 您的应用协议确定了所有这些 .
在TCP中没有请求或响应这样的事情 . 只有一个双向字节流 .