我在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);
}
}
答案 0 :(得分:2)
有一个mask可以启用和禁用要发布的警报类别。 (某些类别可能非常冗长)。默认情况下,仅发布错误以及对特定调用的响应(如保存恢复数据,添加torrent等)。
事实证明,仅在启用alert::tracker_notification
类别的警报时才会发布抓取请求。这很可能是一种疏忽,因为仅在响应执行刮擦的活动调用时发布刮擦警报,无论警报掩码如何都应发布响应。
但是,如果启用跟踪器通知提醒,我想你会得到刮擦响应。
s.set_alert_mask(alert::tracker_notification | alert::error_notification);