python – 非阻塞连接
发布时间:2020-12-16 21:42:59 所属栏目:Python 来源:网络整理
导读:这个问题不仅限于Python.这是一个普通的插座问题.我有一个非阻塞套接字,并希望连接到可访问的机器 另一方面端口不存在.为什么选择()成功呢?我预计会超时. sock.send()因管道损坏而失败.如何在选择()后确定套接字是否真正连接? 提前致谢. import socket,err
这个问题不仅限于Python.这是一个普通的插座问题.我有一个非阻塞套接字,并希望连接到可访问的机器 – 另一方面端口不存在.为什么选择(…)成功呢?我预计会超时. sock.send(…)因管道损坏而失败.如何在选择(…)后确定套接字是否真正连接?
最佳答案
尝试检查返回值.这是我在类似情况下得到的结果:
select()调用可能正在返回,因为套接字上存在异常情况 – 也就是说,它的连接被拒绝了. 如果我这样做,select()立即返回:
有趣的是,返回值与您传入的内容完全匹配(如果您有多个套接字,则可能会有所不同):
select()的设计者期望您在循环中运行select(),如果套接字在您尝试写入时返回错误,则在写入失败时将其从列表中删除. 所以你有几个选择,在我的头顶: >等到您尝试读取套接字并失败,然后采取适当的操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |