diff options
author | Guido van Rossum <guido@python.org> | 2001-04-06 16:32:22 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-04-06 16:32:22 (GMT) |
commit | 66172520ee5b0762274f010e0bfdffd1559876f3 (patch) | |
tree | df6d46bb82b87ebc8a32a76ecac3f712215af3bf /Lib/test/test_asynchat.py | |
parent | e4a1b6d7c4e96dd2af0541dd12444932260e2a66 (diff) | |
download | cpython-66172520ee5b0762274f010e0bfdffd1559876f3.zip cpython-66172520ee5b0762274f010e0bfdffd1559876f3.tar.gz cpython-66172520ee5b0762274f010e0bfdffd1559876f3.tar.bz2 |
Add test for asynchat. This also tests asyncore.
Diffstat (limited to 'Lib/test/test_asynchat.py')
-rw-r--r-- | Lib/test/test_asynchat.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py new file mode 100644 index 0000000..3d31524 --- /dev/null +++ b/Lib/test/test_asynchat.py @@ -0,0 +1,55 @@ +# test asynchat -- requires threading + +import asyncore, asynchat, socket, threading + +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.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 = "" + self.send("hello ") + self.send("world\n") + + def handle_connect(self): + print "Connected" + + def collect_incoming_data(self, data): + self.buffer = self.buffer + data + + def found_terminator(self): + print "Received:", `self.buffer` + self.buffer = "" + self.close() + +def main(): + s = echo_server() + s.start() + c = echo_client() + asyncore.loop() + +main() |