为什么我们需要连接超时管理



对我来说,连接始终是可读的,或者是可写的。

我们就不能依赖r/w事件吗?当客户端关闭连接时,r/w迟早会返回错误,然后我们可以关闭fds。

所以连接管理的唯一意义是防止连接无所事事(它可能一直可以写入服务器,但在正常交互后服务器没有什么可写的),对吗?

对我来说,连接将一直是可读的,或者它将是可写的

不,不会的。只有当套接字接收缓冲区中已经存在数据时,它才是可读的,只有当套接字发送缓冲区中有空间时,它才会是可写的(这是大部分时间,但不是全部时间)。

这就是select()的作用:告诉您这些事件何时发生。

我们就不能依赖r/w事件吗?

如果这意味着"读-写"事件,那么select()就是这样给您的。如果你的意思是别的,你必须解释一下。

当客户端关闭连接时,r/w迟早会返回错误

不,不会的。它将获得流结束指示。根据您使用的API和语言,这有几种形式,但没有一种是错误的。

然后我们可以关闭fds。

当然,当你完成fd时,你应该关闭它们,但网络编程还有更多的东西。

所以连接管理的唯一意义是防止连接无所事事(它可能一直可以写入服务器,但在正常交互后服务器没有什么可写的),对吗?

这毫无意义。你在没有来源或引文的情况下引入了"连接管理"一词,然后断言它只具有你赋予它的含义,没有证据,而"所以"一词只是一个不合理的推论

相关内容

  • 没有找到相关文章

最新更新