我正在构建的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);
}
}发布于 2016-01-10 17:11:08
有一个遮罩,它允许并禁用要发布的警报类别。(有些类别可能相当冗长)。默认情况下,只发布错误以及对特定调用的响应(如保存简历数据、添加洪流等)。
结果是,只有在启用alert::tracker_notification警报类别时,才会发出刮伤请求。这很可能是一种疏忽,因为刮除警报只在响应执行刮取的主动调用时发布,因此响应应该发布,而不管警报掩码是什么。
然而,如果您启用跟踪器通知警报,我想您将得到刮伤响应。
s.set_alert_mask(alert::tracker_notification | alert::error_notification);https://stackoverflow.com/questions/34692225
复制相似问题