Skip to content

Instantly share code, notes, and snippets.

@cosven
Last active November 2, 2017 13:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cosven/7c6cf6df621962d08d654bd75deb08e9 to your computer and use it in GitHub Desktop.
Save cosven/7c6cf6df621962d08d654bd75deb08e9 to your computer and use it in GitHub Desktop.
learning asyncio in practice
# server made with asyncio
# flake8: noqa
import asyncio
from socket import (socket, AF_INET, SOCK_STREAM, SO_REUSEADDR, SOL_SOCKET)
async def start_server(sock):
server = await loop.create_server(asyncio.Protocol, sock=sock)
print(dir(server))
print('server started ?')
async def poll(sock):
conn, addr = await loop.sock_accept(sock)
loop.sock_sendall(conn, b'welcome')
while True:
data = await loop.sock_recv(conn, 1024)
print('Got:', data)
loop = asyncio.get_event_loop()
sock = socket(AF_INET, SOCK_STREAM)
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
sock.bind(('0.0.0.0', 8888))
loop.create_task(loop.create_server(asyncio.Protocol, sock=sock))
loop.create_task(poll(sock))
loop.run_forever()
# -*- coding: utf-8 -*-
#
# server.py
#
from socket import (socket, AF_INET, SOCK_STREAM, SO_REUSEADDR, SOL_SOCKET)
sock = socket(AF_INET, SOCK_STREAM)
# sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
sock.bind(('0.0.0.0', 8888))
sock.listen()
print('Server started')
conn, addr = sock.accept()
conn.sendall(b'hello world')
print('Connection from: ', addr)
for i in range(0, 10):
data = conn.recv(1024)
print('Recv:', data)
if data == 'exit':
conn.close()
break
else:
conn.close()
sock.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment