我有一个使用文档中的模板实现的UDP服务器,可以在这里找到:https://docs.python.org/3/library/asyncio-protocol.html#udp-echo-server-protocol
我想知道丢失连接的客户端的addr . connection_lost回调只有一个参数,异常为exc .
编辑:在downvotes之后我想强调它不是模块中非常友好的部分,在数据报ServerProtocol类' connection_made
'中命名回调 .
我有一个使用文档中的模板实现的UDP服务器,可以在这里找到:https://docs.python.org/3/library/asyncio-protocol.html#udp-echo-server-protocol
我想知道丢失连接的客户端的addr . connection_lost回调只有一个参数,异常为exc .
编辑:在downvotes之后我想强调它不是模块中非常友好的部分,在数据报ServerProtocol类' connection_made
'中命名回调 .
1 回答
Python API设计者需要正确记录这一点 .
当您创建套接字并连接它时,它看起来像
connection_made()
,which in turn only happens if you specify a non-None Remote_addr .要理解所有这些,首先需要了解
connect()
对Berkeley套接字API级别的UDP套接字的作用:它调整套接字以便
write() and
send()can be used as well as
sendto()`,这两者都只发送到连接的目标地址 .它调节套接字以过滤掉所有未在连接目标上生成的数据报 .
它不会创建任何类型的电线连接 . 对等方没有收到任何内容或以任何方式通过网络发送 .
您可以多次
connect()
UDP套接字,可以是不同的地址,也可以是null,这完全取消了(1)和(2) .所以,我只能想象当(4)发生时调用
connection_lost()
回调,它不在你的代码中 .无论它做什么,如果有的话,它肯定不能用于检测客户端何时断开连接,因为在UDP中没有这样的事件 .