【发布时间】:2019-06-19 19:37:30
【问题描述】:
我正在创建一个聊天系统,程序将尝试从每个在线客户端接收消息,但问题是程序正在等待第一个客户端发送和接收内容,然后它正在监听另一个客户端。 请看下面的代码我简化了代码没有提供main。
import socket
port = input("Port: ")
s = socket.socket()
s.bind(('', port))
s.listen(5)
a, b = s.accept()
print "Connection", "with", b[0], "Created Successfully"
while True:
try:
rec = a.recv(1024)
print rec
except:
print "Time Out"
我希望程序检查rec 中是否有任何值(客户端程序是否发送了任何内容),如果没有,它将打印Time Out 而无需等待客户端发送任何内容。
【问题讨论】:
-
你想使用poll(2)系统调用。
-
您当前正在做的称为阻塞调用来接收字节,您要做的是非阻塞调用来接收数据(并传递回调以进行更新),以便您的主线程不会冻结。
标签: python python-2.7 sockets networking