【发布时间】:2017-10-25 12:37:37
【问题描述】:
我正在尝试在 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()
我可以使用普通的旧套接字(没有异步)接收数据包。
我做错了什么?
【问题讨论】:
-
您的代码在我的机器上运行良好,我只需将
''替换为'0.0.0.0'。我使用 netcat 客户端运行了这个测试:nc -u localhost 5006. -
哦可能是因为我正在尝试接收广播UDP?我再测试一下……
-
与UPP广播相关:asyncio issue #480和cpython PR #423
标签: python sockets networking udp python-asyncio