I have been working on this for 2 days, and so far I have not been able to get it to work correctly.
I wanted to write an application that uses 2 sockets with a middle in the middle
This media is a script that must read from socketA and write to SocketB and read from SocketB and write to SocketA.
However, it seems I can not nail him.
My script accepts connections at startup, but it will not allow me to enter anything on the telnet screen.
I use 2 shared lists between sockets for data transfer.
#!/usr/bin/env python import sys import arduinoReadThread import arduinoWriteThread import socket import thread bolt = 0 socketArray=list() HOST ="" HOST2="" PORT1 =50115 PORT2 =50125 s1=socket.socket(socket.AF_INET, socket.SOCK_STREAM ) #create an INET, STREAMing socket s1.bind((HOST,PORT1)) #bind to that port s1.listen(2) #listen for user input and accept 1 connection at a time. socketArray.append(s1) s2=socket.socket(socket.AF_INET, socket.SOCK_STREAM ) #create an INET, STREAMing socket s2.bind((HOST2,PORT2)) #bind to that port s2.listen(2) #listen for user input and accept 1 connection at a time. socketArray.append(s2) print "sockets set up" s1ToWriteList = list() s2ToWriteList = list() def socketFunctionWrite1(): while(bolt == 0): client, address = s1.accept() print "Writing connections" if len(s1ToWriteList) > 0: client.send(s1ToWriteList.pop(0)) def socketFunctionRead1(): while(bolt == 0): client2, address = s2.accept() f = client2.recv(1024) print "reading connection" s1ToWriteList.append(f) print len(s1ToWriteList) def socketFunctionWrite2(): while(bolt == 0): client2, address = s2.accept() print "Writing connections" if len(s2ToWriteList) > 0: client2.send(s2ToWriteList.pop(0)) def socketFunctionRead2(): while(bolt == 0): client, address = s1.accept() f = client.recv(1024) print "reading connection" s2ToWriteList.append(f) print len(s2ToWriteList) def shutDown(): test = raw_input("Quit ?") if(test =="y"): bolt = 1 else: shutDown() def spreadSockets(): thread.start_new_thread(socketFunctionRead1,()) print "launch 1" thread.start_new_thread(socketFunctionRead2,()) print "launch 2" thread.start_new_thread(socketFunctionWrite1,()) print "launch 3" thread.start_new_thread(socketFunctionWrite2,()) print "launch 4" spreadSockets() while(True): pass
source share