【问题标题】:epoll recv return valueepoll recv 返回值
【发布时间】:2012-03-17 05:52:51
【问题描述】:

我使用 epoll 作为级别触发。根据recv(3),如果recv返回0“没有消息可以接收并且对端已经执行了有序关闭”。这是否意味着已收到整个请求并且另一侧的套接字已关闭?插座两端都关闭了吗?或者只是整个请求已经被接收并且套接字正在等待写入响应?任何帮助将不胜感激。

根据What value will recv() return,听起来如果recv返回0,则连接在另一端关闭。如果是这样的话,epoll端需要做什么呢?是否需要通过调用epoll_ctlEPOLL_CTL_DEL 并调用close 来完全删除套接字?

【问题讨论】:

    标签: c sockets epoll


    【解决方案1】:

    这意味着你已经读取了通过连接发送的所有数据,唯一剩下的就是一个 TCP FIN,这可能是远程完全关闭或关闭输出的结果偏僻的。此时您除了关闭套接字外无能为力,除非您知道对等方只有关闭,在这种情况下您仍然可以写入套接字。您的应用程序协议决定了这一切。

    在 TCP 中没有请求或响应之类的东西。只有一个双向字节流。

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 2011-07-13
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2014-10-25
      • 1970-01-01
      相关资源
      最近更新 更多