Viewing file: test_asynchat.py (1.45 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# test asynchat -- requires threading
import thread # If this fails, we can't test this module import asyncore, asynchat, socket, threading, time
HOST = "127.0.0.1" PORT = 54321
class echo_server(threading.Thread):
def run(self): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((HOST, PORT)) sock.listen(1) conn, client = sock.accept() buffer = "" while "\n" not in buffer: data = conn.recv(10) if not data: break buffer = buffer + data while buffer: n = conn.send(buffer) buffer = buffer[n:] conn.close() sock.close()
class echo_client(asynchat.async_chat):
def __init__(self): asynchat.async_chat.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.connect((HOST, PORT)) self.set_terminator("\n") self.buffer = ""
def handle_connect(self): print "Connected"
def collect_incoming_data(self, data): self.buffer = self.buffer + data
def found_terminator(self): print "Received:", repr(self.buffer) self.buffer = "" self.close()
def main(): s = echo_server() s.start() time.sleep(1) # Give server time to initialize c = echo_client() c.push("hello ") c.push("world\n") asyncore.loop()
main()
|