Ich betreibe das folgende Python-Programm unter FreeBSD:Warum TCP-Verbindung zu früh unterbrochen wird?
#!/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")
Dann habe ich es mit telnet XXX 9000
verbinden. Die Verbindung ist nach 5 Minuten und ein paar Sekunden unterbrochen. Warum ist es nach 300 Sekunden (naja eigentlich 304 Sekunden) statt 3600 Sekunden (was ich in der settimeout
Methode eingestellt habe) kaputt ?!
Ich muss meine TCP-Verbindung für einen längeren Zeitraum ausführen, aber ich habe keine Möglichkeit gefunden, es zu tun, außer dem Senden von Non-Sense-Ping-Nachrichten. Gibt es einen anderen Weg ?!
Es gibt zwei Enden eines Sockels; Hat die andere Seite es geschlossen? –
@FilipHaglund Ich denke, es ist nicht – porton
Standard-Timeout für Telnet auf Windows scheint eine Stunde zu sein. Kann keinen Wert für BSD finden. Versuchen Sie es mit netcat (da dies standardmäßig kein Timeout hat) https://www.freebsd.org/cgi/man.cgi?nc –