我正在尝试在Python的asyncio循环中接收UDP数据包。由于对asyncio非常新,所以我可能做错了什么,因为回调从未被调用:
import asyncio
class DiscoveryProtocol(asyncio.DatagramProtocol):
def __init__(self):
super().__init__()
def connection_made(self, transport):
self.transport = transport
def datagram_received(self, data, addr):
print(data)
def start_discovery():
loop = asyncio.get_event_loop()
t = loop.create_datagram_endpoint(DiscoveryProtocol,local_addr=('',5006))
loop.run_until_complete(t)
loop.run_forever()
我可以使用普通套接字(不使用asyncio)来接收数据包。
我做错了什么?
''
替换为'0.0.0.0'
。我使用 netcat 客户端运行了这个测试:nc -u localhost 5006
。 - Vincent