واجهة برمجة تطبيقات أفضل لـ UDP غير المتزامن
واجهة برمجة تطبيقات تشبه websockets لـ UDP
فيما يلي مثال لخادم الصدى:
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
ملحوظة
لا توفر هذه المكتبة أي تجريدات أخرى عبر واجهة UDP الحالية في asyncio
بخلاف واجهة برمجة التطبيقات المستندة إلى async
/ await
. وهذا يعني أنه لا يوجد بروتوكول ضمني يتم التعامل معه في هذه المكتبة مثل QUIC. يجب عليك أن تكتب مكتبتك الخاصة، أو أن تجد مكتبة أخرى.
async
لـ IO. لديها واجهة برمجة تطبيقات مشابهة (والتي لم أكن أعلم عنها قبل أن أكتب هذه المكتبة)حقوق الطبع والنشر © 2021، بريان هو
هذا المشروع مرخص بموجب GNU GPL v3+.
باختصار، هذا يعني أنه يمكنك فعل أي شيء به (التوزيع، التعديل، البيع) ولكن إذا كنت تريد نشر تغييراتك، فيجب عليك جعل التعليمات البرمجية المصدر وتعليمات البناء متاحة بسهولة.
إذا كنت شركة تستخدم هذا المشروع وتريد استثناءً، فأرسل لي بريدًا إلكترونيًا على [email protected] ويمكننا مناقشة الأمر.