libtorrent+API+手册中文版.docx
- 文档编号:11739624
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:121
- 大小:72.31KB
libtorrent+API+手册中文版.docx
《libtorrent+API+手册中文版.docx》由会员分享,可在线阅读,更多相关《libtorrent+API+手册中文版.docx(121页珍藏版)》请在冰豆网上搜索。
libtorrent+API+手册中文版
libtorrentAPI文档(中文版)
作者:
ArvidNorberg,******************
翻译:
小朋友软件,***************
文档原处:
version:
0.14.5
内容列表
·总观
·网络原语
·session
osession()
o~session()
opause()resume()is_paused()
oabort()
oadd_torrent()
oremove_torrent()
ofind_torrent()get_torrents()
oset_upload_rate_limit()set_download_rate_limit()upload_rate_limit()download_rate_limit()
oset_max_uploads()set_max_connections()
onum_uploads()num_connections()
oset_max_half_open_connections()max_half_open_connections()
oload_asnum_db()load_country_db()intas_for_ip()
oload_state()state()
oset_ip_filter()
oget_ip_filter()
ostatus()
oget_cache_status()
oget_cache_info()
ois_listening()listen_port()listen_on()
opop_alert()set_alert_mask()wait_for_alert()set_alert_queue_size_limit()
oadd_extension()
oset_settings()set_pe_settings()
oset_peer_proxy()set_web_seed_proxy()set_tracker_proxy()set_dht_proxy()
opeer_proxy()web_seed_proxy()tracker_proxy()dht_proxy()
ostart_dht()stop_dht()set_dht_settings()dht_state()
oadd_dht_node()add_dht_router()
ostart_lsd()stop_lsd()
ostart_upnp()stop_upnp()
ostart_natpmp()stop_natpmp()
∙entry
ointeger()string()list()dict()type()
ooperator[]
ofind_key()
∙torrent_info
otorrent_info()
oadd_tracker()
ofiles()orig_files()
orename_file()
obegin_files()end_files()rbegin_files()rend_files()
onum_files()file_at()
omap_block()
omap_file()
ourl_seeds()add_url_seed()
otrackers()
ototal_size()piece_length()piece_size()num_pieces()
ohash_for_piece()hash_for_piece_ptr()info_hash()
oname()comment()creation_date()creator()
opriv()
onodes()
oadd_node()
ometadata()metadata_size()
∙torrent_handle
opiece_priority()prioritize_pieces()piece_priorities()
ofile_priority()prioritize_files()file_priorities()
ofile_progress()
osave_path()
omove_storage()
orename_file()
oget_storage_impl()
oforce_reannounce()
oscrape_tracker()
oconnect_peer()
oname()
oset_ratio()
oset_upload_limit()set_download_limit()upload_limit()download_limit()
oset_sequential_download()is_sequential_download()
oset_peer_upload_limit()set_peer_download_limit()
opause()resume()is_paused()
oforce_recheck()
oclear_error()
oresolve_countries()
ois_seed()
ois_auto_managed()auto_managed()
ohas_metadata()
oset_tracker_login()
otrackers()replace_trackers()
oadd_url_seed()remove_url_seed()url_seeds()
oqueue_position()queue_position_up()queue_position_down()queue_position_top()queue_position_bottom()
ouse_interface()
oinfo_hash()
oset_max_uploads()set_max_connections()
osave_resume_data()
ostatus()
oget_download_queue()
oget_peer_info()
oget_torrent_info()
ois_valid()
∙torrent_status
∙peer_info
∙session_settings
∙pe_settings
∙proxy_settings
∙ip_filter
oip_filter()
oadd_rule()
oaccess()
oexport_filter()
∙big_number
∙bitfield
∙hasher
∙fingerprint
∙UPnPandNAT-PMP
oadd_mapping
odelete_mapping
orouter_model()
∙freefunctions
oidentify_client()
oclient_fingerprint()
obdecode()bencode()
oadd_magnet_uri()
omake_magnet_uri()
∙alerts
oexternal_ip_alert
olisten_failed_alert
oportmap_error_alert
oportmap_alert
ofile_error_alert
ofile_renamed_alert
ofile_rename_failed_alert
otracker_announce_alert
otracker_error_alert
otracker_reply_alert
odht_reply_alert
otracker_warning_alert
oscrape_reply_alert
oscrape_failed_alert
ourl_seed_alert
ohash_failed_alert
opeer_ban_alert
opeer_error_alert
oinvalid_request_alert
otorrent_finished_alert
operformance_alert
ometadata_failed_alert
ometadata_received_alert
ofastresume_rejected_alert
opeer_blocked_alert
ostorage_moved_alert
ostorage_moved_failed_alert
otorrent_paused_alert
otorrent_resumed_alert
osave_resume_data_alert
osave_resume_data_failed_alert
odispatcher
∙exceptions
oinvalid_handle
oduplicate_torrent
oinvalid_encoding
otype_error
oinvalid_torrent_file
∙storage_interface
oinitialize()
ohas_any_file()
oread()
owrite()
omove_storage()
overify_resume_data()
owrite_resume_data()
omove_slot()
oswap_slots()
oswap_slots3()
ohash_for_slot()
orename_file()
orelease_files()
odelete_files()
∙magnetlinks
∙queuing
odownloading
oseeding
∙fastresume
ofileformat
∙threads
∙storageallocation
osparseallocation
ofullallocation
ocompactallocation
∙extensions
ometadatafrompeers
oHTTPseeding
∙filenamechecks
∙acknowledgments
概述
libtorrent库的接口由少量几个类组成。
最主要的类是session类,它有一个为所有任务服务的主循环.
基本的用法如下:
●创建一个session
●打开扩展(查看add_extension()).
●打开DHT,LSD,UPnP,NAT-PMP等(查看start_dht(),stop_dht(),set_dht_settings(),dht_state(),start_lsd(),stop_lsd(),start_upnp(),stop_upnp和start_natpmp(),stop_natpmp());
●解析.torrent文件并且把它们加入到session中(查看bdecode(),bencode()和add_torrent())
●主循环(查看session)
⏹查询事务句柄,得到下载进度(查看torrent_handler类)
⏹查询事务,得到下载信息。
⏹在运行时从事务中增加或者删除下载任务。
●主循环(查看session)
●为任务句柄保存新下载的数据(可以查看save_resume_data()函数)
●析构事务对象
每个类和函数在这个手册中被描述到
关于如何创建任务种子文件的描述,但看make_torrent函数
网络原语
在libtorrent名字空间中有一些宏定义,这些定义从asio名字空间中选出。
它们是:
typedefasio:
:
ip:
:
addressaddress;
typedefasio:
:
ip:
:
address_v4address_v4;
typedefasio:
:
ip:
:
address_v6address_v6;
usingasio:
:
ip:
:
tcp;
usingasio:
:
ip:
:
udp;
这些在
这些表述为以下几方面提供简易接口:
tcp:
:
endpoint
udp:
:
endpoint
这些端点类型在libtorrent库中被使用.一个端点是一个地址与相关端口的结合。
关于这些类型的文档,请查看相关asio的文件说明.
session
事务类有如下一些概要:
classsession:
publicboost:
:
noncopyable
{
session(fingerprintconst&print
=libtorrent:
:
fingerprint(
"LT",0,1,0,0)
intflags=start_default_features|add_default_plugins);
session(
fingerprintconst&print
std:
:
pair
charconst*listen_interface=0
intflags=start_default_features|add_default_plugins);
torrent_handleadd_torrent(add_torrent_paramsconst¶ms);
voidpause();
voidresume();
boolis_paused()const;
session_proxyabort();
enumoptions_t
{
none=0,
delete_files=1
};
enumsession_flags_t
{
add_default_plugins=1,
start_default_features=2
};
voidremove_torrent(torrent_handleconst&h,intoptions=none);
torrent_handlefind_torrent(sha_hashconst&ih);
std:
:
vector
voidset_settings(session_settingsconst&settings);
voidset_pe_settings(pe_settingsconst&settings);
voidset_upload_rate_limit(intbytes_per_second);
intupload_rate_limit()const;
voidset_download_rate_limit(intbytes_per_second);
intdownload_rate_limit()const;
voidset_max_uploads(intlimit);
voidset_max_connections(intlimit);
voidset_max_half_open_connections(intlimit);
intmax_half_open_connections()const;
voidset_peer_proxy(proxy_settingsconst&s);
voidset_web_seed_proxy(proxy_settingsconst&s);
voidset_tracker_proxy(proxy_settingsconst&s);
proxy_settingsconst&peer_proxy()const;
proxy_settingsconst&web_seed_proxy()const;
proxy_settingsconst&tracker_proxy()const;
intnum_uploads()const;
intnum_connections()const;
boolload_asnum_db(charconst*file);
boolload_country_db(charconst*file);
intas_for_ip(addressconst&adr);
voidload_state(entryconst&ses_state);
entrystate()const;
voidset_ip_filter(ip_filterconst&f);
ip_filterconst&get_ip_filter()const;
session_statusstatus()const;
cache_statusget_cache_status()const;
boolis_listening()const;
unsignedshortlisten_port()const;
boollisten_on(
std:
:
pair
charconst*interface=0);
std:
:
auto_ptr
alertconst*wait_for_alert(time_durationmax_wait);
voidset_alert_mask(intm);
size_tset_alert_queue_size_limit(size_tqueue_size_limit_);
voidadd_extension(boost:
:
function<
boost:
:
shared_ptr
voidstart_dht();
voidstop_dht();
voidset_dht_settings(
dht_settingsconst&settings);
entrydht_state()const;
voidadd_dht_node(std:
:
pair : string int>const&node); voidadd_dht_router(std: : pair : string int>const&node); voidstart_lsd(); voidstop_lsd(); upnp*start_upnp(); voidstop_upnp(); natpmp*start_natpmp(); voidstop_natpmp(); }; 一旦它被创建,事务对象将会启动主线程来处理所有的工作。 如果没有任何任务提交给主线程的话,主线程将会空闲. session() session(fingerprintconst&print =libtorrent: : fingerprint("LT",0,1,0,0) intflags=start_default_features|add_default_plugins); session(fingerprintconst&print std: : pair charconst*listen_interface=0 intflags=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() voidpause(); voidresume(); boolis_pause()const; 除非这些任务能被自动管理机制恢复,停止一个事务与停止事务中的任务一样.恢复时将重新装载这些任务到它们以前停止的状态。 因为事务停止时的状态与任务停止时的状态是分开的。 如果事务停止或者任务停止的话,任务将会处于非活动状态。 abort() session_proxyabort() 如果你想异步地析构事务,你能申请一个事务析构代理。 如果你不这样做,当服务器被连接时,事务对象的析构过程将来阻塞.当析构事务时,如果给事务提供一个代理,析构过程将不会被阻塞,而是关掉事务,代理的析构将会同步此线程。 所以,当调用事务析构函数后,只有等到事务代理的析构函数被调用时,事务才会真正开始析构。 事务析构代理不会对事务作任何操作(因为事务被关闭时,事务上不允许有任何操作).咋一合法的操作就是调用析构函数: classsession_proxy { public: session_proxy(); ~session_proxy(); }; add_torrent() typedefstorage_interface*(&storage_constructor_type)( file_storaeconst&,file_storageconst*,fs: : pathconst&, file_pool&); structadd_torrent_params { add_torrent_params(storage_constructor_types); boost: : intrusive_ptr charconst*tracker_url; sha1_hashinfo_hash; charconst*name; fs: : pathsave_path; std: : vector
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- libtorrent API 手册 中文版