Я установил этот простой скрипт на моем локальном компьютере:
#!/usr/bin/python
import socket
from datetime import datetime
print "Connecting to test server"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("mydomain.com", 9090))
start = datetime.now()
totalbytes = 0
try:
while True:
data = s.recv(512)
totalbytes += len(data)
print "Got %d bytes of data" % (len(data))
except Exception as e:
print "ERROR", e
pass
end = datetime.now()
print "Lasted for", end - start, "with a total of", totalbytes/1000/1000, "megabytes"
И этот скрипт на моем локальном сервере (работает в той же сети, но учтите, что я прохожу через внешний ip-сервер).адрес здесь)
#!/usr/bin/python
import socket
from datetime import datetime
print "Listening for test client"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.2.100", 9090))
s.listen(5)
start = datetime.now()
try:
while True:
clientsocket, address = s.accept()
# Start sending infinite data until I can't
while True:
clientsocket.send("*" * 511 + "+")
except:
pass
end = datetime.now()
print "This lasted", end - start
На моей проблеме: Соединение обрывается через пару минут.Например, при последнем запуске этого сценария сервер просто остановился и сообщил: «Это длилось 0: 02: 27.517715», то есть до того, как клиент смог получить данные в течение примерно 7 минут, прежде чем он разорвал соединение.Я не очень много занимался сетевым программированием, так что я не знаю, разумно ли ожидать, что они будут оставаться на связи гораздо дольше?Как долго можно ожидать, что активное TCP-соединение будет жить?Насколько распространены подобные отключения?
Я провел эти тесты, чтобы протестировать свою собственную локальную сеть, поскольку у меня возникали проблемы с выходом из системы MSN один раз в час, загрузками, прекращающимися через пару минут, и другимистранное поведение.Мой вопрос не в том, как это исправить, а просто в том случае, если результаты моих тестов являются приемлемыми или указывают на проблемы с моей сетью?