#!/usr/bin/python import asynchat, socket, asyncore, sys a=asynchat.async_chat() try: a.set_terminator(-1) except ValueError: sys.exit(0) sys.exit(1) """ class http_request_handler(asynchat.async_chat): def __init__(self, sock): asynchat.async_chat.__init__(self, sock=sock) self.set_terminator("\r\n") self.buf='' self.state=1 def collect_incoming_data(self, data): self.buf+=data def found_terminator(self): if self.state==1: i=int(self.buf) print 'read length: %d' % i self.set_terminator(i) self.state=2 elif self.state==2: print 'read data: "%s"' % self.buf self.state=3 self.set_terminator('\r\n') else: print 'should read "test". read: "%s"' % self.buf sys.exit(0) self.buf='' i=int(sys.argv[1]) (a,b)=socket.socketpair() r=http_request_handler(a) b.send('%d\r\n' % i + ('x'*10)+'test\r\n') asyncore.loop() """