Example #1
0
    def __init__(self, port):
        """构造函数

        Args:
            port (int): 监听的端口
        """
        super().__init__()
        self.port = port
        self.dispatcher = Dispatcher()
        self.running = True
Example #2
0
    def __init__(self, port):
        """构造函数

        Args:
            port (int): 监听的端口
        """
        super().__init__()
        self.port = port
        self.dispatcher = Dispatcher()
        self.running = True
Example #3
0
class ServerThread(threading.Thread):
    """监听来自客户端的连接的线程"""

    def __init__(self, port):
        """构造函数

        Args:
            port (int): 监听的端口
        """
        super().__init__()
        self.port = port
        self.dispatcher = Dispatcher()
        self.running = True

    def run(self):
        """线程主函数

        循环运行,接受新的客户端的连接。
        """
        log.info('server thread: start, port: %d' % self.port)
        try:
            server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            if os.name != 'nt':
                server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            server.bind(('0.0.0.0', self.port))
            server.listen(100)      # 并发
            server.settimeout(1)    # timeout: 1s
            while self.running:
                # 接受连接
                try:
                    conn, address = server.accept()
                    conn.settimeout(3)
                    self.dispatcher.add_client(conn, address)
                    log.debug('new client from: %s' % str(address))
                except socket.timeout:
                    pass
                # 分发数据
                self.dispatcher.dispatch()
            server.close()
            self.dispatcher.close_all_clients()
            log.info('server thread: bye')
        except Exception as e:
            log.error('server thread error: %s' % e)
            self.running = False
Example #4
0
class ServerThread(threading.Thread):
    """监听来自客户端的连接的线程"""
    def __init__(self, port):
        """构造函数

        Args:
            port (int): 监听的端口
        """
        super().__init__()
        self.port = port
        self.dispatcher = Dispatcher()
        self.running = True

    def run(self):
        """线程主函数

        循环运行,接受新的客户端的连接。
        """
        log.info('server thread: start, port: %d' % self.port)
        try:
            server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            if os.name != 'nt':
                server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            server.bind(('0.0.0.0', self.port))
            server.listen(100)  # 并发
            server.settimeout(1)  # timeout: 1s
            while self.running:
                # 接受连接
                try:
                    conn, address = server.accept()
                    conn.settimeout(3)
                    self.dispatcher.add_client(conn, address)
                    log.debug('new client from: %s' % str(address))
                except socket.timeout:
                    pass
                # 分发数据
                self.dispatcher.dispatch()
            server.close()
            self.dispatcher.close_all_clients()
            log.info('server thread: bye')
        except Exception as e:
            log.error('server thread error: %s' % e)
            self.running = False