python UDP套接字检查连接

时间:2019-05-13 10:38:45

标签: python sockets udp

我有一个可在UDP上运行的小型python控制台。 我遇到的问题是,如果我突然与客户端断开连接,则连接会在netstat中保持打开状态(因为它是UDP)。

我尝试在服务器中实现一个threading.Timer,以询问连接是否处于活动状态,并且如果客户端在此时间内未响应,则连接将从服务器端关闭。

这是我尝试过的

def check_conn(sock: socket.socket):
    # sock.settimeout()
    sock.send(b"\nAwake?")
    try:
        ack = sock.recv(1024)
        ack = ack.decode("UTF-8")
        if ack.strip() == "Yea":
            pass
        else:
            sock.close()
    except:
        sock.close()


so = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
so.connect((host, port))
t = threading.Timer(10.0, check_conn, [so])
t.start()
data = so.recv(1024)
#rest of the main program

我遇到的问题是,当要求输入密码时,两个so.recv(1024)处于打开状态,并且它不知道如何处理它们(这是我的猜测)。

0 个答案:

没有答案