python - python 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)
是打开的,并且它不知道如何处理它们(这是我的猜测)。
解决方案
推荐阅读
- javascript - 无法使用条件 jquery Php 解析 json 和未设置数组
- x86 - PCI I/O BAR 地址 - 32 位还是 16 位?
- java - Google Dialogflow Java API 是否安全?
- azure - 如何在 Azure AD B2C 租户中注册 Zendesk 应用程序(基于 SAML)以执行 SSO?
- python - 收到“从事件循环自管道读取错误”错误
- python - 发布python包包含子目录
- r - 由于可能的索引错误,时间序列函数不起作用?
- design-patterns - 寻找“为问题找到设计模式”的问题
- ios - mapKit 是否有任何默认按钮允许用户将地图的方向从设备方向更改为北上?
- php - PHP 通过使用一个数组键作为键,另一个作为其值来创建一个数组