删除TCP连接,这是正常的吗?

时间:2010-12-27 20:10:17

标签: networking tcp connection connectivity

我在本地机器上设置了这个简单的脚本:

#!/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每小时注销一次,几分钟后停止下载以及其他奇怪行为的问题。我的问题不是如何解决这个问题,而是我的测试结果是否合理,还是指向我的网络问题?

1 个答案:

答案 0 :(得分:0)

TCP连接可以保持多年*并传递无限量的数据。当客户端和服务器断开连接时,您会收到哪些错误?这将是追踪问题的第一步。

[*]我会在理论上无限期地说,但我只是亲自观察“岁月”。