class GameServer: def __init__(self, ip, port, reactor_num=5): self.__compute_thread_pool = compute_thread_pool self.__server = TcpServer(ip, port, reactor_num) def start(self): TcpConnection.on_connection_callback = on_connection TcpConnection.on_message_callback = on_message TcpConnection.on_close_callback = on_close self.__compute_thread_pool.start() self.__server.start() def close(self): self.__server.close() logger.simple_log('正在关闭计算线程池') self.__compute_thread_pool.stop() pass
sys.exit('File torrent not exists') torrent_file_data = parse_torrent_file(args.torrent_file_path) info_hash = hashlib.sha1( json.dumps(torrent_file_data['info']).encode('utf-8')).hexdigest() my_id = ''.join( random.choice(string.ascii_letters + string.digits) for i in range(PEER_ID_SIZE)) main_controller = MainController.start(my_id, info_hash, torrent_file_data, args.seeder) server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((socket.gethostname(), 0)) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.listen(5) tracker_client = TrackerClient(my_id, info_hash, server_socket.getsockname()[0], server_socket.getsockname()[1], torrent_file_data['tracker_ip'], torrent_file_data['tracker_port'], main_controller) tracker_client.daemon = True tracker_client.start() tcp_server = TcpServer(info_hash, server_socket, main_controller) tcp_server.daemon = True tcp_server.start()