向 Tracker Libtorrent 报告 Seeder 或 Leeching 结束
根据我的了解,当你在做种(分享文件)或者下载种子文件的时候,你的IP地址会被记录在一个叫做追踪器(tracker)的地方,这个记录会持续几个小时或者几天。那么,我该怎么手动告诉追踪器,我不再连接了,让它忘记我的IP地址,因为我既没有在做种也没有在下载呢?如果有代码片段或者建议,我会很感激。目前我在使用rasterbar提供的Python绑定,但我也可以接受C++的代码。
2 个回答
追踪器其实就是一些HTTP服务(虽然设计得不太好)。你可以查看BitTorrent追踪器协议,特别是里面的event
这个查询参数。在Python中,你可以使用urllib
这个库。
libtorrent在停止一个种子或者停止会话的时候,会自动处理这些事情。如果你发现这个过程有点失败,可能需要在关闭的时候增加追踪器的超时时间。这会让关闭的时间变长,但可以给一些负载较重的追踪器更多的反应时间。可以查看一下session_settings::stop_tracker_timeout
。默认情况下,这个时间是5秒,但有时候追踪器的响应时间可能会更长,甚至达到30秒。
通常情况下,追踪器会在大约一个小时后超时处理对等节点,而你需要每30分钟重新发送一次公告才能保持活跃。
如果你只是想把停止事件发送给追踪器,使用一个单独的BitTorrent客户端(假设你正在使用的客户端无法发送停止事件给追踪器),那么这个过程可能会不太可靠。
在向追踪器请求时,你应该包括info-hash(也就是种子的唯一标识符)、客户端启动时生成的key、由客户端生成的peer-id,以及传输统计信息。
虽然你可以不包含统计信息,但如果你不知道info-hash或客户端的key,以及在某些情况下peer-id,追踪器就无法确认你的请求实际上是指向你客户端的请求,这样就不会把你的IP地址移除。
实际上,大多数情况下,你只需要知道info-hash和追踪器的URL,就能让它工作。你可以通过加载.torrent文件,提取出info-hash和追踪器的URL。