Guest User

Untitled

a guest
Jun 19th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. import asyncio
  2. import ssl
  3.  
  4. async def wholething():
  5. async def handle_connection(reader, writer):
  6. addr = writer.get_extra_info('peername')
  7. data = await reader.readline()
  8. print(f'Server received {data!r} from {addr}')
  9. writer.write(b'pong\n')
  10. await writer.drain()
  11. writer.close()
  12. print('Server done')
  13.  
  14. server_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
  15. server_context.load_cert_chain('/tmp/ssl/snakeoil.crt', '/tmp/ssl/snakeoil.key')
  16.  
  17. server = await asyncio.start_server(handle_connection, '127.0.0.1', ssl=server_context, )
  18. port = server.sockets[0].getsockname()[1]
  19.  
  20. print(f'Serving on {server.sockets[0].getsockname()}')
  21.  
  22. async def tcp_echo_client():
  23. _NAIVE_SSL_CONTEXT = ssl.SSLContext()
  24. _NAIVE_SSL_CONTEXT.check_hostname = False
  25. reader, writer = await asyncio.open_connection('localhost', port, ssl=_NAIVE_SSL_CONTEXT, )
  26. writer.write(b'ping\n')
  27. await writer.drain()
  28. data = await reader.readline()
  29. print(f'Client received {data!r} from server')
  30. writer.close()
  31. print('Client done')
  32.  
  33. await tcp_echo_client()
Add Comment
Please, Sign In to add comment