libtorrent-rasterbar не может загружать метаданные с помощью магнитных ссылок

Я пытаюсь загрузить удаленный файл метаданных (.torrent), используя поведение без DHT, только трекер с libtorrent-rasterbar 0.16.13.

К сожалению, я получаю много ошибок peer_disconnected; раздача из моей программы и загрузка через клиентов типа BT или QBittorrent работает.

Я использую хеши в шестнадцатеричном кодировании, я не знаю, является ли это проблемой, поскольку libtorrent-rasterbar, похоже, поддерживает хэши Hex и Base32 в URI Magnet.

Помните, что у меня уже есть трекер, и я не хочу использовать DHT, а только магнит для загрузки удаленного торрента в мою локальную файловую систему.

Вот мой код AddMagnetLink:

RESULT SessionManager::addMagnetLink(const QString& info_hash,
                                        const QString& torrentPath,
                                        libtorrent::torrent_handle &thndl)
{
    try
    {
        libtorrent::add_torrent_params tp;
        boost::filesystem::path path(torrentPath.toStdWString());

        std::string url;
        url.append("magnet:?xt=urn:btih:");
        url.append(info_hash.toStdString());
        url.append("&tr=udp://tracker.publicbt.com:80");

        qDebug() << "Using magnet URI:  "<< url.c_str();    
        qDebug() << "Save path is " << tp.save_path.c_str();    

        tp.paused = false;
        tp.auto_managed = true;
        tp.save_path = path.string();

        libtorrent::error_code ec;
        thndl = libtorrent::add_magnet_uri(*_lt_session, url, tp,ec);


        qDebug() << "add_torrent error_code = " << ec.message().c_str();
        qDebug() << "Has metadata";

    }
    catch (std::exception& e)
    {
        qWarning() << "(!) Exception thrown: " << e.what();
        return NKT_E_FAIL;
    }

    return S_OK;

}

Пример вывода:

peer_disconnected_alert: 8061b09e2229111ed93a48080835e371c89c1111 peer (1xx.1xx.3x.x5, libtorrent 0.16.0) disconnecting: [libtorrent error] connected to ourselves
peer_disconnected_alert: 8061b09e2229111ed93a48080835e371c89c1111 peer (1xx.1xx.3x.x5, Unknown) disconnecting: [asio.misc] End of file

Я пытаюсь это сделать в своей локальной сети, между моими машинами.

РЕДАКТИРОВАТЬ: (добавлено больше данных)

Удивительно, но это происходит только при передаче метаданных, так как я пробовал с обычными торрент-файлами, и это работает (раздача и загрузка). Я включил расширения metadata_transfer и ut_metadata; также включены DHT, PEX, UPNP, NATPMP и Local Discovery. Кажется, есть какая-то проблема с передачей метаданных.

Заранее спасибо.,


person Hernán    schedule 18.03.2014    source источник


Ответы (1)


Трекеры будут сообщать только ваш общедоступный IP-адрес и порт.

Если у вас есть два клиента в одной сети с одинаковым внешним IP, и у них не назначен порт (с помощью UPnP или NAT-PMP), они не смогут найти друг друга через трекер.

Вы можете либо включить локальное обнаружение одноранговых узлов (обнаружение локальных служб), чтобы одноранговые узлы сообщали о своем присутствии в локальной сети, либо вы можете убедиться, что они оба доступны через их внешний IP-адрес, включив UPnP и NAT-PMP (при условии, что ваш маршрутизатор поддерживает тот). Вы, вероятно, захотите включить оба.

Сообщение об отключении, которое вы отправляете, указывает, что одноранговый узел может видеть только себя.

person Arvid    schedule 19.03.2014
comment
У вас все в порядке с сопоставлением портов и локальным обнаружением, но я могу использовать libtorrent в своей локальной сети с торрент-файлами, но НЕ с магнитными ссылками - после изменения состояния на метаданные dl происходит отключение однорангового узла. Кажется, проблема связана с передачей метаданных. - person Hernán; 21.03.2014