API yang lebih baik untuk UDP asinkron
API seperti soket web untuk UDP
Berikut ini contoh server gema:
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 ())
Dan klien untuk terhubung ke server:
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 ())
Anda bisa mendapatkan proyek ini melalui pip
$ pip install aioudp
Atau, jika Anda menggunakan Puisi
$ poetry add aioudp
Catatan
Pustaka ini tidak menyediakan abstraksi lain pada antarmuka UDP yang ada di asyncio
selain API berbasis async
/ await
. Artinya tidak ada protokol implisit yang ditangani di perpustakaan ini seperti QUIC. Anda harus menulis sendiri, atau mencari perpustakaan lain.
async
apa pun. Ia memiliki API serupa (yang tidak saya ketahui sebelum saya menulis perpustakaan ini)Hak Cipta © 2021, Bryan Hu
Proyek ini dilisensikan di bawah GNU GPL v3+.
Singkatnya, ini berarti Anda dapat melakukan apa saja dengannya (mendistribusikan, memodifikasi, menjual) namun jika Anda ingin mempublikasikan perubahan Anda, Anda harus menyediakan kode sumber dan instruksi pembuatan.
Jika Anda adalah perusahaan yang menggunakan proyek ini dan menginginkan pengecualian, kirimkan email kepada saya di [email protected] dan kita dapat berdiskusi.