Hi, I'm writing and testing an asyncore-based server. Unfortunately, it doesn't seem to work. The code below is based on the official docs and examples, and starts a listening and sending dispatcher, where the sending dispatcher connects and sends a message to the listener - yet Handler.handle_read() never gets called, and I'm not sure why. Any ideas?
Thanks, D. import asyncore, socket, sys COMM_PORT = 9345 class Handler(asyncore.dispatcher): def handle_read(self): print 'This never prints' class Listener(asyncore.dispatcher): def __init__(self, port=COMM_PORT): asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.set_reuse_addr() self.bind(('', port)) self.listen(5) def handle_accept(self): client, addr = self.accept() print 'This prints.' return Handler(client) class Sender(asyncore.dispatcher): def __init__(self, host): asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.connect( (host, COMM_PORT) ) self.buffer = 'Msg\r\n' def handle_connect(self): pass def writable(self): return len(self.buffer) > 0 def handle_write(self): sent = self.send(self.buffer) self.buffer = self.buffer[sent:] def test_communication(): from multiprocessing import Process def listener(): l = Listener() asyncore.loop(timeout=10, count=1) lis = Process(target=listener) lis.start() def sender(): s = Sender('localhost') asyncore.loop(timeout=10, count=1) sen = Process(target=sender) sen.start() lis.join() test_communication() -- http://mail.python.org/mailman/listinfo/python-list