大佬教程收集整理的这篇文章主要介绍了Windows上的python select.select(),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
while True: rfds,_,_ = SELEct([0,sockfd],[],[]) # sockfd is a socket if 0 in rfds: data = sys.stdin.readline() if not data: break sockfd.sendto(data,target) elif sockfd in rfds: data,addr = sockfd.recvfrom(1024) sys.stdout.write(data)
和错误消息:
TraceBACk (most recent call last): File "udp_punch_client.py",line 64,in <module> main() File "udp_punch_client.py",line 50,in main rfds,[]) SELEct.error: (10038,'')
我知道这个错误与Windows上的SELEct实现有一些关系,每个人都引用这个:
所以我有两个问题:
> [0,sockfd]中的0是什么意思?这是一种经常使用的技术吗?
>如果SELEct仅适用于Windows上的套接字,如何使代码与Windows兼容?
谢谢.
> stdin的额外线程.这应该工作正常,是最简单的工作方式.如果您需要的只是等待I / O事件,Python线程支持是完全可以的.
>类似greenlet的机制,如gevent,修补线程支持和标准库的大多数I / O功能,以防止它们阻塞greenlet.还有像twisted(参见注释)这样的库提供非阻塞文件I / O.这种方式是最一致的,但它应该要求使用与您的框架匹配的样式来编写整个应用程序(扭曲或gevent,差异并不重要).但是,我怀疑扭曲的包装器不能从Windows上的stdin进行异步输入(很确定它们可以在* nix上执行此操作,因为它们可能使用相同的选择).>其他一些技巧.然而,大多数可能的技巧都相当丑陋.
以上是大佬教程为你收集整理的Windows上的python select.select()全部内容,希望文章能够帮你解决Windows上的python select.select()所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。