我可以一次听多个插座吗?
我目前用于监控套接字的代码是:
while True:
for sock in socks:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
Run Code Online (Sandbox Code Playgroud)
但那等待在线:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
Run Code Online (Sandbox Code Playgroud)
直到它收到一条消息.
有没有办法让它一次听到多个套接字
编辑:不确定它是否完全相关,但我正在使用UDP
ent*_*opy 12
就在这里.您需要使用非阻塞调用来从套接字接收.查看选择模块
如果您正在阅读插座,请使用以下方法:
while True:
# this will block until at least one socket is ready
ready_socks,_,_ = select.select(socks, [], [])
for sock in ready_socks:
data, addr = sock.recvfrom(1024) # This is will not block
print "received message:", data
Run Code Online (Sandbox Code Playgroud)
注意:您还可以传递select.select()一个超时的额外参数.如果没有套接字准备好,这将使它永远不会被阻塞.