я запускаю следующую программу Python на FreeBSD:Почему 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 мин и несколько секунд. Почему он прерывается через 300 секунд (ну на самом деле 304 секунды) вместо 3600 секунд (что я установил в методе settimeout
) ?!
Мне нужно запустить мое TCP-соединение в течение длительного периода времени, но я не нашел способа сделать это, за исключением отправки сообщений с нечувствительным пингом. Есть ли другой путь?!
Есть два конца гнезда; другая сторона закрыла его? –
@FilipHaglund Я думаю, что это не – porton
По умолчанию тайм-аут для telnet на окнах, кажется, час. Невозможно найти значение для BSD. Попробуйте использовать netcat (поскольку у него нет тайм-аута по умолчанию) https://www.freebsd.org/cgi/man.cgi?nc –