libtorrent(远程控制与连接管理工具)
v1.2.8 免费版- 软件大小:8.65 MB
- 更新日期:2020-08-10 09:44
- 软件语言:多国语言
- 软件类别:网络共享
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:
软件介绍 人气软件 下载地址
libtorrent是一款功能完善的C++ bittorrent远程管理环境,专注于效率和可伸缩性,它可以在嵌入式设备和台式机上运行,它拥有完善的文档库界面,易于使用,它带有一个简单的bittorrent客户端,演示了该库的用法;支持gzip跟踪器响应,可以限制上传和下载带宽的使用以及未阻塞对等体的最大数量,限制连接数量的可能性;如果没有其它对等方的传出流量,则延迟将有消息,并且不会将消息发送给已有消息的对等方,这样可以节省带宽;支持选择性下载,选择要下载的种子的哪些部分的功能;ip过滤器禁止连接和被连接的IP地址和IP范围,NAT-PMP和UPnP支持,支持它的路由器上的自动端口映射;实施自动上传插槽,以优化下载速度,而不会分散上传容量,可以根据对等方的下载容量来调整上载插槽的数量,即使对于比其他连接快几个数量级的连接也可以正常工作;需要的用户可以下载体验
软件功能
于实现自定义bittorrent扩展而无需修改libtorrent的插件接口
支持具有DHT扩展名的无轨洪流(使用Mainline kademlia DHT协议)。BEP 5。
支持bittorrent 扩展协议。
支持uTorrent元数据传输协议BEP 9(即磁链)。
支持uTorrent对等交换协议(PEX)。
支持本地对等发现(同一本地网络上的对等组播)
多跟踪器扩展支持(同时支持严格的BEP 12和uTorrent解释)。
追踪器刮擦
支持lt_trackers扩展,以在同级之间交换跟踪器
BEP 17和BEP 19中指定的HTTP种子。
支持UDP跟踪器协议。(BEP 15)。
支持no_peer_id = 1扩展名,可以减轻跟踪器的负担。
支持compact = 1跟踪器参数。
超级播种/初始播种(BEP 16)。
私人种子(BEP 27)。
仅上传扩展程序(BEP 21)。
支持IPv6,包括BEP 7和BEP 24。
支持merkle哈希树种子。这使torrent文件的大小与内容的大小很好地缩放。
共享模式。这是一种特殊模式,可以使用种子来优化共享比例,而不是下载种子。
支持Magnet URI扩展名-选择要下载的特定文件索引。BEP 53。
软件特色
磁盘管理
可以使用多个磁盘I / O线程来进行磁盘块网络或客户端交互。
支持验证多个线程中的SHA-1散列,以利用多核计算机。
支持大于2 GB的文件。
快速的恢复支持,这是避免在恢复洪流开始时进行昂贵的检查的一种方法。
将存储状态,piece_picker状态以及所有本地对等项保存在快速恢复文件中。
具有可调节的读写磁盘缓存,以提高磁盘吞吐量。
将torrent排入队列以进行文件检查,而不是并行检查所有文件。
在恢复的洪流中对计件订单没有任何要求。这意味着它可以恢复任何客户端下载的种子。
种子模式,假设磁盘上的文件是完整的,并且在第一次请求时验证每个块的哈希。
实现ARC磁盘高速缓存,已调整以在bittorrent工作负载下表现良好
网络
高质量的uTP实施(BEP 29)。具有基于延迟的拥塞控制的传输协议。请参阅单独的文章。
根据下载速率调整请求队列的长度。
在单个端口和单个线程中提供多个种子
在块级别(而不是在块级别)进行片选。这意味着它可以从不同的对等方下载同一作品的某些部分。
如果从该特定对等方下载的速度足够高,它还将更喜欢从单个对等方下载整个片段。
支持http代理和基本代理身份验证
使用说明
磁盘缓存
libtorrent中的所有磁盘I / O都是通过磁盘io线程与网络线程异步完成的。读取一个块时,磁盘io线程将从该块中的所有后续块读取到读取缓存中,假设请求该块的同位体也将从同一块中请求更多块。这减少了读取数据的系统调用次数。这也减少了寻找的延迟。
同样,对于写请求,一旦完成一个完整的块,或者当需要更多的缓存空间时,该块是最近更新的那个块,就将块缓存并刷新到磁盘。高速缓存在写和读取高速缓存之间动态分配空间。写入缓存的优先级严格高于读取缓存的优先级。
正在使用的缓存块被锁定在物理内存中,以避免将其分页到磁盘上。允许将磁盘高速缓存分页到磁盘意味着刷新它的效率极低,因为必须将其重新读回物理内存才可以再次将其刷新回磁盘。
为了节省内存和系统调用,iovec文件操作用于在单个调用中刷新多个缓存块。
在低内存系统上,可以完全禁用磁盘缓存或将其设置为较小的限制,以节省内存。
磁盘缓存算法可在LRU和最大连续磁盘之间配置。最大的连续算法是默认算法,它刷新缓冲区的最大连续块,而不是刷新属于最近写入的那一块的所有块。
网络缓冲区
在具有较小L2高速缓存的CPU上,复制内存可能是昂贵的操作。在此类计算机上将复制数量降至最低非常重要。这主要适用于嵌入式系统。
为了最大程度地减少接收到的数据被复制的次数,有效负载数据的接收缓冲区被直接接收到页面对齐的磁盘缓冲区中。如果连接被加密,则缓冲区就地解密。然后将缓冲区移到磁盘缓存中,而不进行复制。一旦接收到一块的所有块,或者需要刷新缓存,则将所有块直接传递到writev()以在单个系统调用中刷新它们。这意味着将单个副本复制到用户空间内存,并将单个副本复制回内核内存,如下图所示:
通常,在播种和上载时,可以通过在对齐的缓冲区中缓存块来避免不必要的复制,这些块一次复制到对等方的发送缓冲区中。即使大多数情况下,也不能保证对等方的发送缓冲区是对齐的。然后,使用对等方专用密钥对发送缓冲区进行加密,并将其链接到iovec上进行发送。这意味着有一个用户空间副本,以便允许未对齐的对等请求和对等特定的加密。如下图所示:
捡拾器
片段选择器是bittorrent实现中的核心组件。libtorrent中的片段选择器已经过优化,可以快速找到最稀有的片段。它保留了按稀有度排序的所有可用作品的列表,并对具有相同稀有度的作品进行了混洗。最稀有的第一模式是占主导地位的工件拾取器模式。其他模式也受支持,并且在特定情况下被对等方使用。
工件拾取器允许将工件的可用性与优先级结合起来。他们共同确定了清单的排序顺序。优先级为0的片段将永远不会被选择,用于选择性下载功能。
为了使部分完成的工件尽可能少,同位体倾向于从与相同速度类别中的其他同位体相同的块中拾取块。速度类别是基于对等体的下载速率的粗略分类。这使得慢速对等方从同一块中拾取块,而快速对等方从同一块中进行拾取,因此降低了慢速对等方阻塞块的完成的可能性。
工件选择器还可以设置为按顺序下载工件。
共享方式
libtorrent中的共享模式功能适用于仅对提供帮助而不是下载torrent感兴趣的用户。
它通过预测零件需求来工作,只有在需求足够时才下载零件。只有份额比率达到某个目标时,才下载新作品。
与RSS结合使用时,此功能特别有用,因此可以设置客户端以为整个提要提供额外的带宽。
默克尔·哈希树洪流
Merkle哈希树种子是扩展,它使种子文件仅包含构成片断哈希的哈希树的根哈希。此功能的主要优点是,无论torrent中有多少片段,.torrent文件的大小始终相同。它只会随着文件数量的增长而增加(因为它仍然必须包含文件名)。
对于常规种子,客户必须先请求多个块的块,通常是从不同的对等方请求,然后才能根据块哈希验证数据。片段越大,下载完整片段并进行验证所需的时间就越长。在验证片段之前,无法与群共享该片段,这意味着片段大小较大,对等方下载该片段时周转数据速度较慢。由于平均而言,数据必须经过验证后才能在客户端缓冲区中等待,然后才能再次上传。
大件商品的另一个问题是,当一件商品失败时,客户端很难查明恶意的或有漏洞的同伴,并且重新下载它会花费更长的时间,并且在更大的商品成功之前需要花费更多的尝试。
常规torrent中的文件大小是.torrent文件本身的大小与文件大小之间的权衡。通常,对于4 GB的文件,文件大小为2或4 MB,只是为了避免使.torrent文件太大。
Merkle torrent通过消除.torrent大小与片段大小之间的权衡来解决这些问题。使用merkle torrent,片段大小可以是最小块大小(16 kB),这使对等点可以立即验证从对等点收到的每个数据块。这提供了最短的周转时间,并完全消除了识别恶意对等方的问题。
根哈希是通过成对散列所有散列哈希来构建的,直到它们全部折叠成根为止。
可定制的文件存储
libtorrent的存储实现是可定制的。这意味着专用的torrent种子客户端可以替代默认的在磁盘上存储文件的方式。
实施bittorrent缓存时,只要可以对其进行检索和播种,数据在磁盘上的存储方式都无关紧要。在那种情况下,可以实现一个新的存储类(从storage_interface类继承),从而避免了不必要的将插槽映射到文件和偏移量的步骤。存储可以忽略文件边界,而只是将整个torrent存储在单个文件中(最终将所有文件串联在一起)。除了稍微提高CPU性能外,此方法的主要优点是所有文件操作都将按页面(和扇区)对齐。这样可以实现高效的无缓冲I / O,并有可能导致更高效的读取缓存(使用内置磁盘缓存,而不是依赖于操作系统的磁盘缓存)。
存储界面支持可在其中请求稀疏区域的操作系统(例如Windows和Solaris)。这样做的好处是,在检查文件时,可以跳过已知稀疏的区域,这可以大大减少检查洪流的时间。
易于使用的API
libtorrent API的设计目标之一是简化常见操作,但仍然可以执行复杂和高级的操作。最好用示例代码来说明,以实现一个简单的bittorrent客户端:
该客户端不向用户提供任何关于torrent的状态信息或进度,但是它具有完整的功能。
libtorrent还带有python绑定,以便python开发人员轻松访问。
可移植性
libtorrent在大多数主要操作系统上运行,包括Windows,macOS,Linux,BSD和Solaris。它使用Boost.Asio,Boost.Optional,Boost.System,Boost.Multiprecision,Boost.Intrusive,Boost.Pool,Boost.Python(用于绑定),Boost.CRC和其他各种boost库。至少需要1.49版本的boost。
由于libtorrent使用Boost.Asio,它将充分利用大多数流行平台上的高性能网络API。Windows上的I / O完成端口,Linux上的epoll以及macOS和BSD上的kqueue。
更新信息
验证来自对等方的客户端版本字符串的UTF-8编码
解析主机名时不要将tracker声明为急切
修复NAT-PMP关闭问题
通过合并相同的查找来改善主机名查找
修复大型路由表的网络路由枚举
修复了pop_alerts()可能返回旧的无效警报的问题
修复在元数据之前收到所有消息的问题
不要让缠绵的零件文件句柄打开
不允许在检查过程中调用add_piece()
修复多字节字符的不正确的文件名截断
使用代理时,始终宣布监听端口1
人气软件
-
局域网文件共享工具 0.49 MB
/简体中文 -
SafeShare(局域网共享文件管理软件) 27.45 MB
/简体中文 -
屏幕共享软件(Inletex Easy Meeting Classic) 1.15 MB
/英文 -
usb远程共享工具箱精简完整版 102.58 MB
/简体中文 -
网咖网盘提取码神器 0.45 MB
/简体中文 -
office2016密钥 0 MB
/简体中文 -
QsunSync(七牛云文件同步工具) 3.66 MB
/简体中文 -
eMule Plus 2.69 MB
/简体中文 -
WifiInfoView(无线网络扫描软件) 0.32 MB
/简体中文 -
校园媒资平台 3.99 MB
/简体中文