コード例 #1
0
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
コード例 #2
0
    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()