擅长:python、mysql、java
<p>问题是,如果您有一个阻塞套接字,<code>recv()</code>将在整个超时期间阻塞。您可以指定一个较短的超时,但这可能不是您想要的(如果ping真的是几千毫秒呢?)。在</p>
<p>您可以使用一个<code>select.poll</code>对象,以更频繁的速率(较小的超时时间)轮询感兴趣的套接字,并且只有在轮询报告有要读取的数据时才会调用<code>recv()</code>。在两次轮询之间,如果在任何时候发现<code>notend</code>现在为false,则可以跳出轮询循环。在</p>
<p>如果您的平台不支持<code>poll()</code>,那么看看它是否支持<code>select()</code>。然后,您可以使用<code>select.select()</code>函数来完成或多或少相同的任务。在</p>
<p>以下是所述功能的参考:</p>
<p><a href="http://docs.python.org/2/library/select.html#poll-objects" rel="nofollow">http://docs.python.org/2/library/select.html#poll-objects</a>
<a href="http://docs.python.org/2/library/select.html#select.select" rel="nofollow">http://docs.python.org/2/library/select.html#select.select</a></p>