Files
igl/python/tcpviewer.py
T
2015-09-17 00:22:10 +02:00

46 lines
1.2 KiB
Python

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()