oe磁力种子搜索(BT磁力搜索引擎)

生活常识 2023-04-29 21:52生活常识www.baidianfengw.cn

  ltsession(会话)是最核心的,种子只有加入进去方可下载上传等动作。

  session_handle: 主要负责对session的操作。

  torrent_handle: 主要负责对种子的操作以及状态查询。

  session.pop_alerts(): 可以获取从上次调用以来的所有新警报的列表。每种特定类型的警报可能包括特定于消息类型的附加状态。所有警报都实现一个message()函数,该函数输出警报消息的相关信息。这可以方便地记录事件。

  下面先针对各小功能进行代码实现,最好再整合一个完整的代码例子

  1. 添加种子/磁力(并下载)

  以上为 通过磁力链接 和 torrent 种子这两种方式添加到session的简单例子。torrent_info类又诸多构造函数,对象定义方法也非常多,根据需要选择合适的。

  添加种子到session的方法有 同步调用(阻塞耗时)和异步调用(立即返回)两种,也根据需要选择。

  2. 警报

  直接上代码讲解

  我们可以用‘警报掩码’抓取我们关心的警报(有很多种类),如下

  警报掩码 之 掩码类别

  警报类型

  3. 更新配置选项

  session启动后,可以通过调用 apply_settings() 更新配置,

  虽然这样可以更新配置,但有些设置最好在启动会话之前设置,比如 listen_interfaces,以避免出现竞争条件。如果使用默认设置启动会话,然后立即更改它们,则仍会有一个应用默认设置的窗口。

  更改设置可能会触发侦听套接字关闭和重新打开,并发送NAT-PMP、UPnP更新。,将设置更新批处理到单个调用中通常是一个好主意。

  4. 获取种子状态

  5. 恢复种子

  恢复下载时,BT引擎必须恢复正在下载种子的状态,特别是文件的哪些部分已下载, 有两种方法可以做到这一点

  (1) 从磁盘读取已下载文件片段,并将其与预定的哈希值进行比较。

  (2) 保存已下载的片段(和部分片段)的状态到磁盘,并在恢复时重新加载。

  如果添加种子时没有提供恢复数据,那么libtorrent将默认使用上面第1点。

  libtorrent有提供函数,实现保存恢复数据的功能:

  调用该函数的时机

  (1). 人为地选中某个种子,操作‘保存恢复数据’。

  (2). 每个种子加载完成时。

  (3). 关闭session之前。

  注意调用该函数并没将恢复数据保存到磁盘上面, 调用该函数后实际上会发出警报

  save_resume_data_alert(若成功) 或

  save_resume_data_failed_alert(若失败)

  6. session对象的析构销毁

  默认情况下会话析构函数会被阻塞。关闭时,需要联系追踪器以停止种子,其他未完成的操作需要取消。关闭有时可能需要几秒钟,主要是因为跟踪器没有响应(和超时)以及DNS服务器没有响应。DNS查找在失控时尤其难以中止。

  为了能够异步地开始销毁等待,可以调用session::abort()。它返回一个session_proxy对象,它是一个句柄,用于在销毁会话状态时保持会话状态。它故意不提供任何会话操作,因为它正在关闭。

  拥有session_proxy对象后,会话析构函数不会阻塞。session_proxy析构函数却将被阻塞。

  这可用于并行关闭多个会话或应用程序的其他部分。

  7. 完整实例

Copyright@2015-2025 白癜风网版板所有