scrape_tracker 不对 libtorrent 发出任何警报

scrape_tracker doen't give any alert with libtorrent

我在我正在构建的 C++ 应用程序中使用 libtorrent,下载工作完美,但我想在尝试开始下载之前询问跟踪器它已连接的种子和对等点的数量。

我尝试使用 scrape_tracker(),但从未收到警报。我想我没有以正确的方式使用警报,但我找不到可以使用的代码。 这就是我所做的:

while (running)
{
   sleep(1000);

   std::vector<alert*> alerts;
    s.pop_alerts(&alerts);

   for (std::vector<alert*>::iterator i = alerts.begin(), end(alerts.end()); i != end; ++i)
   {
       scrape_failed_alert* tpf = alert_cast<scrape_failed_alert>(*i);
       if (tpf)
           MessageBox(0,"alert",0,0);

       scrape_reply_alert* tpr = alert_cast<scrape_reply_alert>(*i);
       if (tpr)
           MessageBox(0,"alert",0,0);
   }
}

有一个 mask 可以启用和禁用要发布的警报类别。 (有些类别可能非常冗长)。默认情况下,仅发布错误以及对特定调用的响应(如保存简历数据、添加 torrent 等)

事实证明,只有在 alert::tracker_notification 警报类别启用时才会发布抓取请求。这很可能是一个疏忽,因为抓取警报仅在响应执行抓取的主动调用时发布,因此无论警报掩码如何,都应发布响应。

但是,如果您启用跟踪器通知警报,我想您会收到抓取响应。

s.set_alert_mask(alert::tracker_notification | alert::error_notification);