Created
April 10, 2015 17:14
-
-
Save Averroes/9b5ee827d11cf67b651b to your computer and use it in GitHub Desktop.
event driven io explained
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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) | |
| def fileno(self): | |
| return self.sock.fileno() | |
| def wants_to_receive(self): | |
| return True | |
| class UDPTimeServer(UDPServer): | |
| def handle_receive(self): | |
| msg, addr = self.sock.recvfrom(1) | |
| self.sock.sendto(time.ctime().encode('ascii'), addr) | |
| class UDPEchoServer(UDPServer): | |
| def handle_receive(self): | |
| msg, addr = self.sock.recvfrom(8192) | |
| self.sock.sendto(msg, addr) | |
| if __name__ == '__main__': | |
| handlers = [ UDPTimeServer(('',14000)), UDPEchoServer(('',15000)) ] | |
| event_loop(handlers) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment