0
私はFreeBSD上で、次のPythonプログラムを実行します。なぜTCP接続が早すぎますか?
#!/usr/bin/python
import socket
host = ''
port = 9000
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversocket.bind((host, port))
serversocket.listen(5)
while True:
sock, address = serversocket.accept()
print("Connected ", address)
sock.settimeout(3600)
data = sock.recv(4096)
sock.close()
print("Disconnected")
その後、私はtelnet XXX 9000
とそれに接続します。 5分後と数秒後に接続が切断されます。 3600秒(私はsettimeout
の方法で設定した)の代わりに300秒(実際には304秒)後に壊れているのはなぜですか?
私はTCP接続を長時間実行する必要がありますが、ノンセンスのpingメッセージを送信する場合を除き、それを行う方法はありませんでした。他の方法はありますか?
ソケットの両端は2つあります。反対側はそれを閉じましたか? –
@FilipHaglund私はそうだと思います。 – porton
Windowsでのtelnetのデフォルトタイムアウトは1時間と思われます。 BSDの値が見つかりません。 netcatを使ってみてください(デフォルトではタイムアウトしていません)。https://www.freebsd.org/cgi/man.cgi?nc –