socket.listenにする方法(1)いくつかの時間のために働くし、コードの残りの部分を続けますか?

StackOverflow https://stackoverflow.com/questions/2444178

  •  20-09-2019
  •  | 
  •  

質問

私はそれがいくつかの時間のためにそのポートでリッスンするポートごとに、コードの残りの部分を継続し、ポート範囲を超える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私は、このような答えを与えた最後の時間を持って...おそらく必ず誰も作らないしたい純粋主義者によって、これまでに、プログラムが途中で、彼らは多くのとは対照的に、そのようなあなたのような非常に特異な構造によって例えば(の不承認書き込みサーバの通常、通常の方法)。のは、この時期に何が起こるか見てみましょう! - )

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top