tcpviewer.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import socket
  2. import multiprocessing
  3. import igl
  4. import array
  5. HOST = '' # Symbolic name meaning all available interfaces
  6. PORT = 50008 # Arbitrary non-privileged port
  7. class TCPViewer(igl.viewer.Viewer):
  8. def launch(self):
  9. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  10. s.connect((HOST, PORT))
  11. a = array.array('u',self.serialize())
  12. s.sendall(a)
  13. s.close()
  14. if __name__ == "__main__": # The main script is a server
  15. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  16. s.bind((HOST, PORT))
  17. s.listen(1)
  18. print("TCP iglviewer server listening on port " + str(PORT))
  19. try:
  20. while True:
  21. conn, addr = s.accept()
  22. data = ''
  23. while True:
  24. datanew = conn.recv(1024)
  25. if not datanew:
  26. break
  27. data = data+datanew
  28. conn.close()
  29. def worker(data):
  30. viewer = igl.viewer.Viewer()
  31. temp = list(data.decode('unicode_internal','ignore'))
  32. viewer.deserialize(temp)
  33. viewer.launch(True,False)
  34. return
  35. t = multiprocessing.Process(target=worker, args=(data,))
  36. t.start()
  37. except:
  38. s.close()