import asyncio HOST = "127.0.0.1" PORT = 8888 async def handle_client(reader: asyncio.StreamReader, writer: asyncio.StreamWriter): addr = writer.get_extra_info('peername') print(f'Connection to {addr}') try: while True: data = await reader.read(1024) if not data: break message = data.decode().strip() print(f'Received from {addr}: {message}') writer.write(data) await writer.drain() finally: print(f'Connection closed: {addr}') writer.close() await writer.wait_closed() async def main(): server = await asyncio.start_server(handle_client, HOST, PORT) addr = ', '.join(str(sock.getsockname()) for sock in server.sockets) print(f'Listening on {addr}') async with server: await server.serve_forever() if __name__ == '__main__': asyncio.run(main())