我的服务器可以很好地使用我的选择功能:
readable, writable, exceptional = select.select(inputs, outputs, timeout)
以下是可写循环的代码:
^{pr2}$s是套接字对象。这里的代码只发送给正在发送内容的客户机。 我只想将下一条消息多播到其他可写套接字,因此我尝试了:
for s in writable:
try:
next_msg = message_queues[s].get_nowait()
except Queue.Empty:
# No messages waiting so stop checking for writability.
print >>sys.stderr, 'output queue for', s.getpeername(), 'is empty'
outputs.remove(s)
else:
for multicast in writable:
print >>sys.stderr, 'sending "%s" to %s' % (next_msg, multicast.getpeername())
multicast.send(next_msg)
但这不起作用,它总是只发送给发送者。在
好的多播现在可以了。 我以为writable包含一个可写套接字的列表,但它只有一个被选中。我真的不明白第一个循环是“for s in writable”,如果只有一个套接字在writable中,但是。。。 所以!它与输入列表一起工作:
相关问题 更多 >
编程相关推荐