socket.listenにする方法(1)いくつかの時間のために働くし、コードの残りの部分を続けますか?
質問
私はそれがいくつかの時間のためにそのポートでリッスンするポートごとに、コードの残りの部分を継続し、ポート範囲を超えるTCPソケットと仕事をするサーバーを作っています。
このような::
import socket
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
msg =''
ports = [x for x in xrange(4000)]
while True:
try:
for i in ports:
sck.bind(('',i))
## sck.listen(1)
## make it just for some time and then continue this
## if there a connection do this
conn, addr = sck.accept()
msg = conn.recv(2048)
## do something
##if no connection continue the for loop
conn.close()
except KeyboardInterrupt:
exit()
私はsck.listenを作ることができる方法(1)
??いくつかの時間のためにだけ働きます解決
あなたがすることができますのsetTimeout の上あなたはそれをするたびに(あなたがを待機する時間おきにlisten
前に再びそれを呼び出す周りにこのの時間)待機する時間の最大量に対するソケット - あなたは例外を取得しますが、 socket.timeout に、タイマーが満了した場合、そのような場合をキャッチするために、その周りtry
/ except socket.timeout:
を持つようにしてください。 (タイムアウト付きselect.select
も動作し、複数のソケットに、様々な条件を待つことができるという利点があるが、それはあなたの非常に具体的な質問への答えとして少し小さいDirectのでしょう)。
私は多くのdownvotes私は、このような答えを与えた最後の時間を持って...おそらく必ず誰も作らないしたい純粋主義者によって、これまでに、プログラムが途中で、彼らは多くのとは対照的に、そのようなあなたのような非常に特異な構造によって例えば(の不承認書き込みサーバの通常、通常の方法)。のは、この時期に何が起こるか見てみましょう! - )
所属していません StackOverflow