Network ======================= Network examples ----------------- TCP echo client ^^^^^^^^^^^^^^^^ example :: import uvio message = 'Hello World!' @uvio.sync async def main(): socket = await uvio.net.connect('127.0.0.1', 8888) socket.write(message.encode()) print('Data sent: {!r}'.format(self.message)) @socket.data def data_received(data): print('Data received: {!r}'.format(data.decode())) @socket.end def connection_lost(): print('The server closed the connection') print('Stop the event loop by closing the all open handles') print('One could aslo call loop.close()') socket.close() TCP echo server ^^^^^^^^^^^^^^^^ example :: import uvio async def handler(socket): print('Connection from {}'.format(socket.peername())) @socket.data def data_received(data): message = data.decode() print('Data received: {!r}'.format(message)) print('Send: {!r}'.format(message)) socket.write(data) print('Close the client socket') socket.close() @uvio.sync async def main(): # Each client connection will create a new protocol instance server = await uvio.net.listen(handler, '127.0.0.1', 8888) print('Serving on {}'.format(server.getsockname())) Get HTTP Headers ^^^^^^^^^^^^^^^^ example:: import uvio import urllib.parse import sys @uvio.sync(timeout=3.0) async def print_http_headers(url): url = urllib.parse.urlsplit(url) if url.scheme == 'https': # Not implemented raise NotImplementedError("https") else: socket = await uvio.net.connect(url.hostname, 80) query = ('HEAD {path} HTTP/1.0\r\n' 'Host: {hostname}\r\n' '\r\n').format(path=url.path or '/', hostname=url.hostname) writer.write(query.encode('latin-1')) while True: line = await socket.readline() if not line: break line = line.decode('latin1').rstrip() if line: print('HTTP header> %s' % line) # Ignore the body, close the socket socket.close() def main(): url = sys.argv[1] print_http_headers(url)