Metadata-Version: 2.1
Name: aioudp
Version: 0.1.0
Summary: A better API for asynchronous UDP
Home-page: https://github.com/ThatXliner/aioudp
License: GPL-3.0-or-later
Keywords: udp,asyncio
Author: Bryan Hu
Author-email: bryan.hu.2020@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Project-URL: Documentation, https://aioudp.readthedocs.io/en/latest/index.html
Description-Content-Type: text/markdown

# AioUDP

[![Documentation Status](https://readthedocs.org/projects/aioudp/badge/?version=latest)](https://aioudp.readthedocs.io/en/latest/?badge=latest)

> A better API for asynchronous UDP

A [websockets](https://websockets.readthedocs.io/en/stable/index.html)-like API for [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol)

Here's an example echo server:

```py
import aioudp
import asyncio

async def main():
    async def handler(connection):
        async for message in connection:
            await connection.send(message)
    async with aioudp.serve("localhost", 9999, handler):
        await asyncio.Future()  # Serve forever

if __name__ == '__main__':
    asyncio.run(main())
```

And a client to connect to the server:

```py
import aioudp
import asyncio

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())
```

