tcpviewer.py 1.2 KB

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