接続時にタイムアウトしたいソケットがあるので、まだ接続できない場合は操作全体をキャンセルできます。また、タイムアウトを必要としないソケットにメイクファイルを使用することもできます。
これを行う簡単な方法はありますか、またはこれは難しいことですか?
python接続後のタイムアウトのリセットを許可するので、makefileを使用でき、ソケット接続のタイムアウトを保持できます
settimeout()
を試みる前に、ソケット connect()
メソッドを使用する必要があります。接続後、settimeout(None)
を使用してソケットをブロックする必要があります。モード。これはmakefileに必要です。私が使用しているコードは次のとおりです。
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect(address)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Python2.6以降を使用している場合は、 socket.create_connection
sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)