diff options
author | ToadKing <toadking@toadking.com> | 2013-08-12 23:30:49 -0400 |
---|---|---|
committer | ToadKing <toadking@toadking.com> | 2013-08-12 23:30:49 -0400 |
commit | 7466223864929d50d02407dde1da331133a0bef1 (patch) | |
tree | 60403b8061880e6aea503a20d9c45b3e678ec6ad /tests/sockets/socket_relay.py | |
parent | c2b064eb49ea63eec59add5751c8a9c2b80dab92 (diff) | |
parent | 3090cdd713609a9d3f749d13002a898e03cbd5e3 (diff) |
Merge branch 'incoming' of https://github.com/kripken/emscripten into fixed_openal_buffers
Conflicts:
src/library_openal.js
Diffstat (limited to 'tests/sockets/socket_relay.py')
-rw-r--r-- | tests/sockets/socket_relay.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/sockets/socket_relay.py b/tests/sockets/socket_relay.py new file mode 100644 index 00000000..5b6403f9 --- /dev/null +++ b/tests/sockets/socket_relay.py @@ -0,0 +1,56 @@ +''' +Listens on 2 ports and relays between them. + +Listens to ports A and B. When someone connects to port A, and then +sends some data to port A, that data is sent to someone who +connected to socket B. And so forth. + +This is different than say socat which will listen to one port +and then make a connection to another port, and do bidirectional +communication. We need to actually listen on both ports. +''' + +import os, sys, socket, time, threading, signal +from subprocess import Popen, PIPE, STDOUT + +ports = [int(sys.argv[1]), int(sys.argv[2])] + +class Listener(threading.Thread): + def run(self): + self.conn = None + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + global ports + port = ports[0] + ports = ports[1:] + print 'listener binding to ', port + s.bind(('127.0.0.1', port)) + s.listen(1) + print 'listener', port, 'waiting for connection' + conn, addr = s.accept() + self.conn = conn + while 1: + time.sleep(0.5) + print 'listener', port, 'waiting for data' + data = conn.recv(20*1024) + if not data: + continue + while not self.other.conn: + print 'listener', port, 'waiting for other connection in order to send data' + time.sleep(1) + print 'listener', port, 'sending data', len(data) + self.other.conn.send(data) + +in_listener = Listener() +in_listener.daemon = True +in_listener.start() + +out_listener = Listener() +out_listener.daemon = True +out_listener.start() + +in_listener.other = out_listener +out_listener.other = in_listener + +while 1: + time.sleep(1) + |