Skip to content

Instantly share code, notes, and snippets.

@Averroes
Averroes / client.py
Created April 10, 2015 17:09
creating a udp server
from socket import socket, AF_INET, SOCK_DGRAM
s = socket(AF_INET, SOCK_DGRAM)
s.sendto(b'', ('localhost', 20000))
print(s.recvfrom(8192))
@Averroes
Averroes / timeserv1.py
Created April 10, 2015 17:10
creating a udp server
from socketserver import BaseRequestHandler, UDPServer
import time
class TimeHandler(BaseRequestHandler):
def handle(self):
print('Got connection from', self.client_address)
# Get message and client socket
msg, sock = self.request
resp = time.ctime()
sock.sendto(resp.encode('ascii'), self.client_address)
@Averroes
Averroes / timeserv2.py
Created April 10, 2015 17:10
creating a udp server
from socket import socket, AF_INET, SOCK_DGRAM
import time
def time_server(address):
sock = socket(AF_INET, SOCK_DGRAM)
sock.bind(address)
while True:
msg, addr = sock.recvfrom(8192)
print('Got message from', addr)
resp = time.ctime()
@Averroes
Averroes / eventhandler.py
Created April 10, 2015 17:11
event driven io explained
class EventHandler:
def fileno(self):
'Return the associated file descriptor'
raise NotImplemented('must implement')
def wants_to_receive(self):
'Return True if receiving is allowed'
return False
def handle_receive(self):
@Averroes
Averroes / tcpclient.py
Created April 10, 2015 17:11
event driven io explained
from socket import socket, AF_INET, SOCK_STREAM
s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 16000))
s.send(b'Hello\n')
print('Got:', s.recv(8192))
s.close()
@Averroes
Averroes / tcpserver.py
Created April 10, 2015 17:12
event driven io explained
# TCP Example
import socket
from eventhandler import EventHandler, event_loop
class TCPServer(EventHandler):
def __init__(self, address, client_handler, handler_list):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
self.sock.bind(address)
@Averroes
Averroes / threadpool.py
Created April 10, 2015 17:12
event driven io explained
import socket
from concurrent.futures import ThreadPoolExecutor
from eventhandler import EventHandler, event_loop
class ThreadPoolHandler(EventHandler):
def __init__(self, nworkers):
self.signal_done_sock, self.done_sock = socket.socketpair()
self.pending = []
self.pool = ThreadPoolExecutor(nworkers)
@Averroes
Averroes / thrpoolclient.py
Created April 10, 2015 17:13
event driven io explained
from socket import *
sock = socket(AF_INET, SOCK_DGRAM)
for x in range(40):
sock.sendto(str(x).encode('ascii'), ('localhost', 16000))
resp = sock.recvfrom(8192)
print(resp[0])
@Averroes
Averroes / udpclient.py
Created April 10, 2015 17:13
event driven io explained
from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.sendto(b'', ('localhost', 14000))
print(s.recvfrom(128))
s.sendto(b'Hello', ('localhost', 15000))
print(s.recvfrom(128))
@Averroes
Averroes / udpserver.py
Created April 10, 2015 17:14
event driven io explained
import socket
import time
from eventhandler import EventHandler, event_loop
class UDPServer(EventHandler):
def __init__(self, address):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.bind(address)