C++ libtorrent rasterbar无法使用磁铁链接下载元数据

C++ libtorrent rasterbar无法使用磁铁链接下载元数据,c++,disconnect,libtorrent,magnet-uri,C++,Disconnect,Libtorrent,Magnet Uri,我正在尝试下载一个远程元数据文件.torrent,使用libtorrent rasterbar 0.16.13,不使用DHT,只使用跟踪器 不幸的是,我得到了很多对等断开连接的错误;从我的程序中播种,并通过BT或QBittorrent等客户端下载 我使用的是十六进制编码的哈希,我不知道这是否是问题所在,因为libtorrent rasterbar在magnetic URI中似乎同时支持十六进制和Base32哈希 请记住,我已经有了一个跟踪器,我不想使用DHT,但magnet只是用于将远程torr

我正在尝试下载一个远程元数据文件.torrent,使用libtorrent rasterbar 0.16.13,不使用DHT,只使用跟踪器

不幸的是,我得到了很多对等断开连接的错误;从我的程序中播种,并通过BT或QBittorrent等客户端下载

我使用的是十六进制编码的哈希,我不知道这是否是问题所在,因为libtorrent rasterbar在magnetic URI中似乎同时支持十六进制和Base32哈希

请记住,我已经有了一个跟踪器,我不想使用DHT,但magnet只是用于将远程torrent下载到本地文件系统

以下是我的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;

}
我正在我的本地局域网中,在我的机器之间尝试这个

编辑:添加更多数据

令人惊讶的是,这种情况只发生在元数据传输中,就像我在普通torrent文件中尝试的那样,它可以在种子和下载中工作。我已经启用了元数据传输和ut元数据扩展;此外,还启用了DHT、PEX、UPNP、NATPMP和本地发现。似乎在传输元数据时出现了一些问题


提前感谢。

跟踪器将只报告您的公共IP和端口

如果您在同一网络上有两个具有相同外部IP的客户端,并且它们没有使用UPnP或NAT-PMP映射端口,那么它们将无法通过追踪器找到彼此

您可以启用本地对等点发现本地服务发现以使对等点在本地网络上公布其存在,也可以通过启用UPnP和NAT-PMP(假设您的路由器支持),确保它们都可以通过其外部IP访问。您可能希望同时启用这两个选项


您发布的断开连接消息表明对等方只能看到自己。

跟踪器将只报告您的公共IP和端口

如果您在同一网络上有两个具有相同外部IP的客户端,并且它们没有使用UPnP或NAT-PMP映射端口,那么它们将无法通过追踪器找到彼此

您可以启用本地对等点发现本地服务发现以使对等点在本地网络上公布其存在,也可以通过启用UPnP和NAT-PMP(假设您的路由器支持),确保它们都可以通过其外部IP访问。您可能希望同时启用这两个选项


您发布的断开连接消息表明对等方只能看到自己。

关于端口映射和本地发现,您没有问题,但我可以在LAN中使用带有torrent文件的libtorrent,但不能使用磁铁链接-在状态更改为dl元数据后,对等方断开连接。元数据传输似乎存在问题。您对端口映射和本地发现没有问题,但我可以在局域网中将libtorrent与torrent文件一起使用,但不能与磁铁链接一起使用-在状态更改为dl元数据后,会发生对等断开连接。似乎问题在于元数据传输。
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