对我来说,连接始终是可读的,或者是可写的。
我们就不能依赖r/w事件吗?当客户端关闭连接时,r/w迟早会返回错误,然后我们可以关闭fds。
所以连接管理的唯一意义是防止连接无所事事(它可能一直可以写入服务器,但在正常交互后服务器没有什么可写的),对吗?
对我来说,连接将一直是可读的,或者它将是可写的
不,不会的。只有当套接字接收缓冲区中已经存在数据时,它才是可读的,只有当套接字发送缓冲区中有空间时,它才会是可写的(这是大部分时间,但不是全部时间)。
这就是select()
的作用:告诉您这些事件何时发生。
我们就不能依赖r/w事件吗?
如果这意味着"读-写"事件,那么select()
就是这样给您的。如果你的意思是别的,你必须解释一下。
当客户端关闭连接时,r/w迟早会返回错误
不,不会的。它将获得流结束指示。根据您使用的API和语言,这有几种形式,但没有一种是错误的。
然后我们可以关闭fds。
当然,当你完成fd
时,你应该关闭它们,但网络编程还有更多的东西。
所以连接管理的唯一意义是防止连接无所事事(它可能一直可以写入服务器,但在正常交互后服务器没有什么可写的),对吗?
这毫无意义。你在没有来源或引文的情况下引入了"连接管理"一词,然后断言它只具有你赋予它的含义,没有证据,而"所以"一词只是一个不合理的推论