123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import socket
- import multiprocessing
- import igl
- import array
- HOST = 'localhost' # Symbolic name meaning all available interfaces
- PORT = 50008 # Arbitrary non-privileged port
- def worker(data):
- viewer = igl.viewer.Viewer()
- temp = list(data)
- viewer.deserialize(temp)
- viewer.launch(True,False)
- return
- class TCPViewer(igl.viewer.Viewer):
- def launch(self):
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((HOST, PORT))
- a = array.array('u',self.serialize())
- s.sendall(a)
- s.close()
- if __name__ == "__main__": # The main script is a server
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.bind((HOST, PORT))
- s.listen(1)
- print("TCP iglviewer server listening on port " + str(PORT))
- try:
- while True:
- conn, addr = s.accept()
- slist = []
- while True:
- buf = conn.recv(4096)
- if not buf:
- break
- slist.append(buf.decode('unicode_internal','ignore'))
- conn.close()
- data = ''.join(slist)
- t = multiprocessing.Process(target=worker, args=(data,))
- t.start()
- except:
- s.close()
|