使用选择库了解Python聊天服务器的代码

时间:2019-03-13 20:27:08

标签: python-2.7

我正在学习如何编写聊天程序,我读了一本书,在名为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:有人可以向我解释“处理输出”和“处理异常”部分如何逐行处理,以获取比书中注释更多的细节吗?根据上本书中的示例代码

0 个答案:

没有答案