aioudp
v1.0.1
更好的异步 UDP API
类似 websockets 的 UDP API
这是一个回显服务器示例:
import asyncio
import signal
import aioudp
async def main ():
async def handler ( connection ):
async for message in connection :
await connection . send ( message )
# Optional. This is for properly exiting the server when Ctrl-C is pressed
# or when the process is killed/terminated
loop = asyncio . get_running_loop ()
stop = loop . create_future ()
loop . add_signal_handler ( signal . SIGTERM , stop . set_result , None )
loop . add_signal_handler ( signal . SIGINT , stop . set_result , None )
# Serve the server
async with aioudp . serve ( "localhost" , 9999 , handler ):
await stop # Serve forever
if __name__ == '__main__' :
asyncio . run ( main ())
以及连接到服务器的客户端:
import asyncio
import aioudp
async def main ():
async with aioudp . connect ( "localhost" , 9999 ) as connection :
await connection . send ( b"Hello world!" )
assert await connection . recv () == b"Hello world!"
if __name__ == '__main__' :
asyncio . run ( main ())
您可以通过pip
获取该项目
$ pip install aioudp
或者,如果你使用诗歌
$ poetry add aioudp
笔记
除了基于async
/ await
的 API 之外,该库不提供对asyncio
中现有 UDP 接口的其他抽象。这意味着该库中没有处理隐式协议,例如 QUIC。您必须自己编写,或者寻找另一个库。
async
IO 实现。它有一个类似的 API(在我写这个库之前我并不知道)版权所有 © 2021,布莱恩·胡
该项目已获得 GNU GPL v3+ 的许可。
简而言之,这意味着您可以用它做任何事情(分发、修改、销售),但如果您要发布更改,则必须随时提供源代码和构建说明。
如果您是使用该项目的公司并希望获得例外,请给我发送电子邮件至 [email protected],我们可以进行讨论。