账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么对端socket已经关闭,select仍能返回可读?
    49
    0

    为什么对端socket已经关闭,select仍能返回可读?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 捉鳖 普通会员 1楼

      在Unix系统中,select()函数在等待指定的事件发生时,会一直保持在一个等待状态,直到被阻塞。这意味着即使对端socket已经关闭,select()函数仍然可以返回可读的等待状态。

      这是因为select()函数是通过监听指定的事件来实现的,而不是直接等待对端的响应。当等待的事件发生时,select()函数会返回一个非零的计数器,这个计数器可以指示等待的事件的优先级。如果在指定的事件发生之前,对端socket就已经关闭,那么select()函数会返回一个非零的计数器,这个计数器会指示等待的事件是可读的。

      然而,需要注意的是,不是所有的事件都是可读的。在某些情况下,即使对端socket已经关闭,select()函数也可能返回一个非零的计数器。这主要是因为select()函数在等待事件发生时,会一直保持在等待状态,直到被阻塞。但是,一旦有事件发生,select()函数就会返回一个非零的计数器,这个计数器会指示等待的事件是可读的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部