当空的python时,继续sock.recv()

时间:2014-07-10 15:09:33

标签: python sockets

我正在运行一个正在寻找套接字连接数据的线程。当它是空的时它就像我发现的那样坐在那里,但是当它是空的时我想通过它。我发现select模块应该可以做到,但现在它只是位于选择行。我在下面的一些研究中尝试了这个,但就像我说的那样,现在不是停在data = sock.recv,而是停在第一行。有任何想法吗?感谢。

while True:
        readable, writable, exceptional = select.select([sock], [], [])
        if readable:
            data = sock.recv(1024)
        else:
            do something

1 个答案:

答案 0 :(得分:1)

正如您在the documentation中读到的那样,select.select()采用可选的第4个参数,取超时值。

如果超时没有sock变为可读,则readable为空。

您可以尝试类似

的内容
while True:
    readable, writable, exceptional = select.select([sock], [], [], 1.0)
    if readable:
        data = sock.recv(1024)
    else:
        print "nothing yet"