云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > libtorrent+API+手册(中文版) - 图文

libtorrent+API+手册(中文版) - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/7/14 11:25:34

void start_lsd(); void stop_lsd();

upnp* start_upnp(); void stop_upnp();

natpmp* start_natpmp(); void stop_natpmp(); };

一旦它被创建,事务对象将会启动主线程来处理所有的工作。如果没有任何任务提交给主线程的话,主线程将会空闲.

session()

session(fingerprint const& print

= libtorrent::fingerprint(\

, int flags = start_default_features | add_default_plugins);

session(fingerprint const& print

, std::pair listen_port_range , char const* listen_interface = 0

, int flags = start_default_features | add_default_plugins); 如果第一个重载函数中指纹函数被省略了,客户端将获得一个表示库版本的默认指纹, 这个指纹是个将用在同步id中来辨认客户与客户的版本的一个短字符串,关于指纹的更多细节可以查看fingerprint类。这个构造函数只是提供一个指纹,但并不为事务打开一个监听端口,如果想打开端口,必须调用listen_on函数。 第二个构造函数,会提供一个监听端口的范围,监听接口,指纹会自动监听提供的接口。并于参数的更多细节,可以参考listen_on()函数。

标志参数可以用来启动默认参数(比如upnp&nat-pmp)和默认插件

(ut_metadata, ut_pex, smart_ban).默认情况下是启动这些。如果不想它们启动,传0给flags参数即可。

~session()

session的析构将会通知所有的服务器我们的任务已关闭。如果一些服务器正在下载,它们将会延时。这些操作在事务对象析构完才会操作完。所以,只有关掉所有接口才析构所有的事务。因为它需要几秒钟才结束。这个超时时间可以用set_settings()函数设置。 pause() resume() is_paused()

void pause(); void resume();

bool is_pause() const;

除非这些任务能被自动管理机制恢复,停止一个事务与停止事务中的任务一样.恢复时将重新装载这些任务到它们以前停止的状态。因为事务停止时的状态与任务停止时的状态是分开的。如果事务停止或者任务停止的话,任务将会处于非活动状态。 abort()

session_proxy abort()

如果你想异步地析构事务,你能申请一个事务析构代理。如果你不这样做,当服务器被连接时,事务对象的析构过程将来阻塞.当析构事务时,如果给事务提供一个代理,析构过程将不会被阻塞,而是关掉事务,代理的析构将会同步此线程。所以,当调用事务析构函数后,只有等到事务代理的析构函数被调用时,事务才会真正开始析构。事务析构代理不会对事务作任何操作(因为事务被关闭时,事务上不允许有任何操作).咋一合法的操作就是调用析构函数: class session_proxy { public:

session_proxy(); };

add_torrent()

typedef storage_interface* (&storage_constructor_type)( file_storae const&, file_storage const*, fs::path const&, file_pool&);

struct add_torrent_params {

add_torrent_params(storage_constructor_type s);

~session_proxy();

boost::intrusive_ptr ti; char const* tracker_url; sha1_hash info_hash; char const* name; fs::path save_path;

std::vector* resume_data; storage_mode_t storage_mode; bool paused;

bool auto_managed;

bool duplicate_is_error;

storage_constructor_type storage; void* userdata; };

torrent_handle add_torrent(add_torrent_params cosnt& params); 通过add_torrent()函数,就可以为事务增加任务,这样你就给了session所有的参数。

save_path是仅有的一个规定的参数,它是你的文件需要存放的目录。你也要指定ti(种子文件)或者info_hash(种子的哈希信息).如果你指定了哈希信息,任务文件将会中对等点上下载,这就要求它们支持元数据扩展。当元数据扩展工作时,libtorrent为将使扩展设置为使能状态。

(TORRENT_DISABLE_EXTENSIONS 不被定义). 这个扩展有一个可选的名字参数。如果没有名字给这个参数的话,它可能是0.如果这个名字不是0, 则只要扩展没有元数据的话,则名字将用在任务中.具体的可查看torrent_handle::name 如果任务没有服务器的话,就需要DHT来发现对等点(peers), 服务器的地址可能是0, 否则你必须指定一个查找任务的服务器地址.

如果你试图增加的任务已在事务中存在(正在队列中等待检查,正在被检查,或者正在下载) add_torrent()函数将会抛出从std::exception派生的异常,除非duplicate_is_error参数被设置为假。在那种情况下,add_torrent函数将返回已存在任务的句柄。

如果着能快速更新下载的数据的话, 可选的参数resume_data将会被给出。通过调用torrent_handler上的save_resume_data函数,fast_resume 数据将会从运行的任务中取出。具体可查看fast_resume.通过使用

std::vector::swap()函数。正在传递的容器将会交换进运行的任务事例中。

存储模式的参数涉及这个任务的储布局。有三种模式: 分解存储模式

所有的片将所写到它们属于并且分解文件将用到的地方。这是推荐的,是一种默认模式。 分配存储模式

除了文件将会在开始时被截断外,其它与分解存储模式相同.因为文件系统支持分解文件,它会与分解模式相同,如果文件系统不支持分解文件,libtorrent库将会为文件分配数据。Mac文件系统HFS+不支持分解文件,它将会分配长度为0的文件。 紧缩存储模式

这种模式下,存储将会随着片的下载而增长,并且所有的片将会在整个任务都下载后被重新组织在正确的地方. 更多的信息,可以查看storage_allocation

paused参数是用来指定是否任务将会在中止的状态被启动的标志。例如,只有任务被恢复时,任务才会连接服务器或者任意一个端点.这通常可以避免在启动任务时,设置配置的选项存在竟争条件。

当恢复的数据到来时,恢复数据将来保存,同时任务的中止状态参数将会重载你在这里传入的中止状态。

如果auto_managed参数为真时,任务将会放入队列,被libtorrent库开始或生成种子。同时,任务应以中止的方式启动。默认的队列顺序与任务加入的顺序相同。它们也以那种顺序下载,更多细节可以查看queuing.

如果传入了恢复数据,恢复数据将被存储,任务的auto_managed状态将重载这里传入的auto_managed 状态。

存储将会用来定制数据的存储方式。默认的存储将会简单地写到它属于的文件,但是它可能重载地存放所有的数据到单个的文件或者在磁盘上加载这些数据。storage_interface需要配合一个客户存储而执行,更多细节可以查看storage_interface,

userdata参数是可选的,并且将会被传递到扩展构造函数中(可查看 add_extension())

add_torrent()返回的Torrent_handle可以用来获得任务的处理信息,它的对等点等。也可以用来结束一个任务。 remove_torrent()

void remove_torrent(torrent_handle const & h, int options = none);

搜索更多关于: libtorrent+API+手册(中文版) - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

void start_lsd(); void stop_lsd(); upnp* start_upnp(); void stop_upnp(); natpmp* start_natpmp(); void stop_natpmp(); }; 一旦它被创建,事务对象将会启动主线程来处理所有的工作。如果没有任何任务提交给主线程的话,主线程将会空闲. session() session(fingerprint const& print = libtorrent::fingerprint(\ , int flags = start_default_featu

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com