Skip to content
Snippets Groups Projects
__init__.py 1.33 KiB
Newer Older
import socket
from .. import TWSProxy
class TWSServer:
    import socket

    LISTENPORT = 4000
    MAXCONN = 5

    def run(self):
        logger = logging.getLogger()
        logger.debug("starting up server")
        serversocket = socket.socket(
                    socket.AF_INET, socket.SOCK_STREAM)
        #bind the socket to a public host,
        # and a well-known port
        for port in range(self.LISTENPORT,self.LISTENPORT+1):
            try:
                serversocket.bind(('127.0.0.1', port))
        #become a server socket
                serversocket.listen(self.MAXCONN)
                logger.debug("Server listening on port {}".format(port))
                break
            except Exception as e:
                print(e)
                pass
        openconnections = []
        logger.debug("waiting for a connection")
        while 1:
            (clientsocket, address) = serversocket.accept()
            logger.debug("accepted connection on {}".format(clientsocket))
            clientsocket.setblocking(True)
            tunnel = TWSProxy(clientsocket)
            tunnel.daemon = True
            tunnel.start()
            openconnections.append(tunnel)
            for c in openconnections:
                if not c.is_alive():
                    c.join()
                    openconnections.remove(c)