在几秒钟不活动后,在python中关闭持久性TCP连接

时间:2015-07-15 19:50:52

标签: python sockets tcp

我已经构建了一个简单的TCP服务器,它运行在我的Pi上,存储从GPRS模块接收的一些数据。它通常工作正常,但随机间隔(几个小时甚至几天)我的python脚本不再接收任何数据。我怀疑这是由TCP连接无法正常关闭引起的。如果我终止脚本并尝试再次运行它,我会收到端口正在使用的错误。

到目前为止,这是我的代码:

    from socket import * 
    import time

    HOST = ''
    PORT = 24071
    BUFFER_SIZE = 200
    b=" "
    data=" "

    s = socket(AF_INET, SOCK_STREAM)
    s.bind((HOST, PORT))

    while 1:
            s.listen(1)
            print ''
            print ''
            print ''
            mTime = time.strftime('%d-%m-%y   %H:%M:%S')
            print mTime
            print 'Port',PORT,': listening...'
            conn, addr = s.accept()
            print 'Connection address:', addr, conn
            while 1:
                    data = conn.recv(BUFFER_SIZE)
                    print "received:", data
                    if not data: break
                    if data=="start":
                            b=conn.recv(BUFFER_SIZE)
                            print "data:", b
                            if not b: break
                    if data=="check":
                            print "check!!"
                            conn.send("test")

我希望在几秒钟后结束任何持久连接(例如20秒)。我有什么方法可以做到这一点吗?

0 个答案:

没有答案