【问题标题】:Python 2.7 server.socket timeout questionPython 2.7 server.socket 超时问题
【发布时间】:2019-12-21 00:16:52
【问题描述】:

我有一些 python 代码有时会在打开连接但没有发送数据时阻塞。我明白为什么它在等待 64 位或更少的数据。它将永远等待。如果没有收到数据,是否有一种简单的方法可以使连接超时。任何帮助或建议将不胜感激。

    serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    serversocket.bind(('', port))
    serversocket.listen(5) # become a server socket, maximum 5 connections
    while 1:
        try:
            while 1:
               # print "Waiting for oonnection..."
                connection, address = serversocket.accept()
                buf = connection.recv(64)

【问题讨论】:

    标签: python sockets server timeout


    【解决方案1】:

    您可以使用socket.settimeout(value),其中value 是秒数。

        serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        serversocket.bind(('', port))
        serversocket.listen(5) # become a server socket, maximum 5 connections
    
        while 1:
            try:
                while 1:
                   # print "Waiting for oonnection..."
                    connection, address = serversocket.accept()
                    connection.settimeout(5) # Set 5 seconds timeout to receive 64 bytes of data
    
                    buf = connection.recv(64)
    
            except socket.timeout:
                print("Timeout happened -- goting back to accept another connection")
    

    【讨论】:

    • 在服务器套接字上设置它会使接受超时。要使接收超时,必须在接受的套接字上设置它。
    • @user207421 我刚刚更改了代码并设置了连接超时
    猜你喜欢
    • 2017-12-25
    • 2013-11-28
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2016-10-22
    • 2015-02-08
    相关资源
    最近更新 更多