Created
September 18, 2011 14:30
-
-
Save zoranzaric/1225123 to your computer and use it in GitHub Desktop.
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
class MessageReceiver(object): | |
def __init__(self, message_handler): | |
self.message_handler = message_handler | |
def listen(self): | |
pass | |
class MessageHandler(object): | |
def handle_message(self, message): | |
pass | |
import socket | |
class TcpMessageReceiver(MessageReceiver): | |
def __init__(self, message_handler): | |
self.MSGLEN = 5 | |
self.message_handler = message_handler | |
def listen(self): | |
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
self.socket.bind(("127.0.0.1", 9999)) | |
self.socket.listen(23) | |
while True: | |
connection, address = self.socket.accept() | |
msg = '' | |
while len(msg) < self.MSGLEN: | |
chunk = connection.recv(self.MSGLEN-len(msg)) | |
if chunk == '': | |
raise RuntimeError("socket connection broken") | |
msg = msg + chunk | |
self.message_handler.handle_message(msg) | |
connection.close() | |
class UpperCaseMessageHandler(MessageHandler): | |
def handle_message(self, message): | |
print str(message).upper() | |
mr = TcpMessageReceiver(UpperCaseMessageHandler()) | |
mr.listen() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment