#!/usr/bin/env python3 import asyncio import sys class EchoClientProtocol: def __init__(self, message, loop): self.message = message self.loop = loop self.transport = None def connection_made(self, transport): self.transport = transport print('Send:', self.message) self.transport.sendto(self.message.encode()) def datagram_received(self, data, addr): print("Received:", data.decode()) print("Close the socket") self.transport.close() def error_received(self, exc): print('Error received:', exc) def connection_lost(self, exc): print("Socket closed, stop the event loop") loop = asyncio.get_event_loop() loop.stop() uv, address = sys.argv[1:] if uv != '0': import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) loop = asyncio.get_event_loop() message = "Hello World!" connect = loop.create_datagram_endpoint( lambda: EchoClientProtocol(message, loop), remote_addr=(address, 9999)) transport, protocol = loop.run_until_complete(connect) loop.run_forever() transport.close() loop.close()