def start(self): """ This function starts the control and file socket by creating one thread for each """ try: self.tcp_socket = socket(AF_INET, SOCK_STREAM) self.tcp_socket.bind((self.connection_address, self.tcp_port)) self.tcp_socket.listen() self.tcp_file_socket = socket(AF_INET, SOCK_STREAM) self.tcp_file_socket.bind((self.connection_address, 4444)) self.tcp_file_socket.listen() tcp_thread = Thread(target=self.tcp_server_start, name="tcp_thread") self.threads.append(tcp_thread) tcp_thread.start() tcp_file_thread = Thread(target=self.tcp_file_start, name="tcp_file_thread") self.threads.append(tcp_file_thread) tcp_file_thread.start() except KeyboardInterrupt: logger.exception("keyboard interrupt") self.tcp_socket.close() self.tcp_file_socket.close()
def run(self): while not self.closed: try: self.update(1) except KeyboardInterrupt: logger.exception("keyboard interrupt") break except: logger.error(traceback.print_exc()) traceback.print_exc()
def tcp_file_start(self): """ This function serves the file socket. The thread will call this function. """ try: while True: (client_socket, client_addr) = self.tcp_file_socket.accept() tcp_file_thread = Thread(target=self.__transfer_file, args=[client_socket], name="tcp_client_file_thread") self.threads.append(tcp_file_thread) tcp_file_thread.start() except KeyboardInterrupt: logger.exception("keyboard interrupt") self.tcp_file_socket.close()
def tcp_server_start(self): """ This function serves the control socket. The thread will call this function. """ try: while True: (client_socket, client_addr) = self.tcp_socket.accept() tcp_thread = Thread(target=self.__process_requests, args=[client_socket, client_addr], name="tcp_client_thread") self.threads.append(tcp_thread) tcp_thread.start() except KeyboardInterrupt: logger.exception("keyboard interrupt") self.tcp_socket.close()