0

在python套接字编程中,例如聊天,主要目的是不断地接收来自其他人的消息,同时如果他按下任何键,程序应该接受输入并发送该消息,而不是打印接收到的消息。发送完成后,它应该打印收到的消息。如何在不明确要求用户键入消息的情况下执行此操作?

谢谢。

4

1 回答 1

1

如果我正确理解你的问题,你会想要使用某种形式的事件系统。将输入文本和接收消息视为事件。

http://en.wikipedia.org/wiki/Event_(计算)

Python中的事件系统

因为像这样的东西是一个实时程序,你的程序将在一个循环中运行。在整个循环中,事件被放入一个队列中,并且在每个循环的开始,它们按照它们被触发的顺序被处理。

由于您正在使用网络,因此少量线程可能会很有用。由于 Global Interpreter Lock,Python 不能真正使用多线程来提升性能,但它对于在后面进行 I/O 仍然很有用。这样,当您的聊天客户端(使用您的示例)尝试获取其他人发送的消息时,程序的其余部分不会冻结。这对于慢速互联网连接特别有用。

于 2013-03-09T20:55:02.093 回答