35 lines
807 B
Python
35 lines
807 B
Python
#!/usr/bin/env python
|
|
# $ printf 'echo\r\n' | nc localhost 12321
|
|
# echo
|
|
import asyncio
|
|
import logging
|
|
import os
|
|
|
|
logger = logging.getLogger('echoserver')
|
|
|
|
async def echo_handler(reader, writer):
|
|
address = writer.get_extra_info('peername')
|
|
logger.debug('accept: %s', address)
|
|
message = await reader.readline()
|
|
writer.write(message)
|
|
await writer.drain()
|
|
writer.close()
|
|
|
|
if __name__ == '__main__':
|
|
logging.basicConfig()
|
|
logger.setLevel(logging.DEBUG)
|
|
loop = asyncio.get_event_loop()
|
|
factory = asyncio.start_server(
|
|
echo_handler,
|
|
os.environ.get('HOST'),
|
|
os.environ.get('PORT', 12321)
|
|
)
|
|
server = loop.run_until_complete(factory)
|
|
try:
|
|
loop.run_forever()
|
|
except KeyboardInterrupt:
|
|
pass
|
|
server.close()
|
|
loop.run_until_complete(server.wait_closed())
|
|
loop.close()
|