This module implements a MessageInterface for UDP based on the asyncio DatagramProtocol.
This is a simple version that works only for clients (by creating a dedicated
unbound but connected socket for each communication partner) and probably not
with multicast (it is assumed to be unsafe for multicast), which can be
expected to work even on platforms where the
udp6 module can not be
made to work (Android, OSX, Windows for missing
recvmsg and socket options,
or any event loops that don’t have an add_reader method).
Note that the name of the module is a misnomer (and the module is likely to be renamed): Nothing in it is IPv6 specific; the socket is created using whichever address family the OS chooses based on the given host name.
One small but noteworthy detail about this transport is that it does not distinguish between IP literals and host names. As a result, requests and responses from remotes will appear to arrive from a remote whose netloc is the requested name, not an IP literal.
This transport is experimental, likely to change, and not fully tested yet (because the test suite is not yet ready to matrix-test the same tests with different transport implementations, and because it still fails in proxy blockwise tests).
MessageInterfaceSimple6(ctx: aiocoap.interfaces.MessageManager, log, loop)¶
create_client_transport_endpoint(ctx, log, loop)¶