我在本地机器上设置了这个简单的脚本:
#!/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-address)
#!/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每小时注销一次,几分钟后停止下载以及其他奇怪行为的问题。我的问题不是如何解决这个问题,而是我的测试结果是否合理,还是指向我的网络问题?
答案 0 :(得分:0)
TCP连接可以保持多年*并传递无限量的数据。当客户端和服务器断开连接时,您会收到哪些错误?这将是追踪问题的第一步。
[*]我会在理论上无限期地说,但我只是亲自观察“岁月”。