我正在学习如何编写聊天程序,我读了一本书,在名为The Python standard library by Example的书中看到了示例代码,在第595页上,有一个使用select的聊天服务器,但我仍然没有理解。请参见以下代码:
# Handle inputs
for s in readable:
if s is server:
connection, client_address = s.accept()
connection.setblocking(0)
inputs.append(connection)
message_queues[connection] = Queue.Queue()
else:
data = s.recv(1024)
if data:
message_queues[s].put(data)
if s not in outputs:
outputs.append(s)
# if there is no data receive, my problem from here
else:
# interpret empty result as closed connection
# stop listening for input on the connection
if s in outputs:
outputs.remove(s)
inputs.remove(s)
s.close()
# Remove message queue
del message_queues[s]
[请帮助我回答以下以下问题]
问题1:为什么套接字上没有收到数据,我们将关闭套接字?
问题2:我不了解“消息队列”是如何工作的,我在Internet上找到了一些示例代码,他们没有编写“处理输出”,“处理异常”部分,也没有使用“邮件队列”,但他们的服务器仍然可以正常运行。我的问题“他们为什么这样做?”
问题3:有人可以向我解释“处理输出”和“处理异常”部分如何逐行处理,以获取比书中注释更多的细节吗?根据上本书中的示例代码