multithreading - Python socket multiple connections -
i'm trying python application connected java program , raspebrry pi. program should listen java , raspberry , able response. don't know how that. i'm using couple of threads , can send message raspberry , listen java in same time can't listen 2 connections , it's necessary me.
def startprogram(sock): try: sock.setblocking(false) sock.settimeout(10) sock.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1) sock.connect((java_host, java_port)) data = sock.recv(1024) if (data == "abc\r\n"): sock.sendall("abc otrzymane!!!\n") global robot_ip_address robot_ip_address = sys.argv[0] + "." + sys.argv[1] + "." + sys.argv[2] + "." + sys.argv[3] threading.thread(target=steering, args=[order]).start() threading.thread(target=getdistance, args=[sock]).start() except: sock.close() finally: return sock //program starts here! sock = socket.socket(socket.af_inet, socket.sock_stream) sock = startprogram(sock) sock.listen(1) sock.setblocking(0) while 1: conn, addr = sock.accept() data = conn.recv(1024) if (data == "camera\r\n"): iscameraon = ~iscameraon if iscameraon == true: sendorder("camera_on") else: sendorder("camera_off") if(data == "order\r\n"): order = data
it's code executed when run program java. , it's code of function listening information raspberry:
def getdistance(s): s.bind((my_ip_address, from_robot_port)) // exception s.listen(1) while (true): conn, addr = s.accept() print('connection address:', addr) while 1: data = conn.recv(buffer_size_distance) if not data: break print("received data:", data) conn.send(data) # echo conn.close()
generally problem socket. can't create 2 socket variable , listen in different ports @ same time , don't know why. exception:
file "pythonscript.py", line 32, in getdistance s.bind((java_host, from_robot_port)) file "<string>", line 1, in bind file "c:\jython2.5.0\lib\socket.py", line 777, in bind assert not self.sock_impl assertionerror
i don't know means exception.
Comments
Post a Comment