点量BT的开发目的是让用户无需关心和了解BT的具体实现细节,只需要写几十行甚至几行代码,便可以实现一个功能完善而且强大的BT应用软件,减少越来越多的应用程序需要纳入BT功能时的大量重复性开发和资金成本消耗。
点量BT内核提供标准的BT功能支持,同时支持目前流行的各类BT扩展协议,是一个功能丰富的BT应用开发工具包。除了BT功能,点量BT还支持客户自定义协议,在基于BT架构的基础上,帮助您实现自己的P2P网络通讯协议,构建自己的P2P用户群。
这里先列举点量BT的一些基本功能:
标准BT协议支持:完全标准官方BT协议的支持,并支持常用的多项扩展协议,点量BT完全兼容各类BT应用软件。
极其方便的调用方式:采用标准DLL方式,类似于系统的winsock等dll,调用方式完全类似于系统API,结合作者完善的开发文档和演示代码,开发一个功能完善的BT应用软件,所需时间之短超出你的想象。
支持HTTP协议同时下载:点量BT当前版本支持简单的跨协议下载,一方面突破了国内很多网络环境对BT端口和协议的封锁,另一方面解决了无人供种时的下载问题。
DHT网络支持:点量BT提供标准的DHT网络支持,并自动加入Bitcomet、官方Bittorent等流行客户端的DHT网络,共享整个BT网络内的用户资源,一方面解决了无Tracker状态下的文件下载,另一方面提高了下载速度。
智能磁盘分配:支持全面预分配模式,此模式下可以文件下载前预先分配磁盘空间,减少磁盘碎片的产生;同时也支持边下载边分配的方式,用户可以根据需要自己选择。
支持UDP Tracker协议,支持多Tracker协议,支持等效Tracker报告。
高效的UPnP穿透:无需XP SP2的支持,实现各版本系统下的内网免配置。
自动防火墙穿透技术:全自动穿透XP、Vista网络连接防火墙(ICF)和网络连接共享(ICS)。
支持XP SP2的TCP/IP连接数限制的破解修改,保证P2P的良好效果。
智能文件续传:记录上次文件的各种信息,下次启动时无需扫描,立即启动下载。并且保存了上次的Peer信息,提高启动下载的速度。
完善丰富的接口支持:提供丰富的控制和获取信息的接口,满足应用程序绝大部分的功能需求。比如,不仅可以限制全局上传下载速度和连接数,也可以对每个任务单独设置等。
提供专业上传服务器模式:点量BT商业版支持专业的上传服务器模式,该模式专注于上传性能的提升,优化大量文件上传时的传输效率和IO性能,适合提供大量文件给客户下载时使用(比如视频网站、游戏程序的分发时,由专门的服务器使用上传服务器模式支撑大量用户的下载)。
私有种子加密:通过私有种子加密,可以构建自己的私有BT网络,防止其它客户端使用你公司的种子文件。
私有协议支持:支持设置自定义协议,构建自己的私有P2P网络,并突破各网络环境对BT应用的封锁。
如果您需要开发BT或者P2P的下载功能,那么可以考虑使用点量BT,您可以在点量BT的基础上开发,希望能对您有所帮助,节省您的开发成本。
如果您需要提供较大数据量的软件、视频等文件供其它人在互联网进行下载,而且您希望节省带宽和服务器成本,那么可以考虑使用点量BT,使用点量BT开发工具包很快就可以实现您想要的上传服务器。
点量BT可以被应用于视频网站、软件站点、网络游戏程序的下载和更新、教育视频和文档的下载等领域。
1.3支持的语言和开发环境
点量BT提供标准的动态链接库(DLL),可供C/C++、Delphi、C#、Java、VB等语言调用,让您完全像调用系统API一样的使用点量BT开发工具包(SDK)。
点量BT内核和演示程序的开发环境是Visual Studio .Net 2003,如果您需要编译和阅读点量BT SDK中的示例程序,建议您安装 Visual Studio .Net 2003开发环境。
点量BT开发工具包中提供了分别基于MFC和C#的两个版本的示例程序,你完全可以参考它们来调用点量BT内核。
2.1外部接口的模块结构
点量BT对外提供的接口,可以划分为如下几个部分:
Kernel整体环境相关:Kernel整体环境承担着整个点量BT其它模块的管理功能,负责监听一个TCP端口和一个UDP端口(UDP端口可选,用于DHT通讯,如果不启动DHT则不需要监听UDP端口),管理所有的下载任务。
下载任务的相关接口:每个Torrent种子文件的下载对应一个下载任务对象Downloader,该部分提供对某个单一下载任务的控制(启动、暂停、限速等)和信息的读取接口。
制作种子的相关接口:用于种子文件的制。该部分不仅符合标准BT协议规范,并且支持国内比较流行的BT客户端软件Bitcomet的一些扩展做法(嵌入发布者信息、默认使用公共DHT网络节点等)。注意,一个Torrent文件中可以包含多个要下载文件的描述。
获取种子信息的接口:可以在不启动任务下载的情况下,打开指定的种子文件,获取种子文件内的相关信息。
P2P辅助功能接口:这部分提供P2P软件都需要的一些接口,包括UPnP穿透、穿透ICF防火墙、突破操作系统并发连接数限制等。不仅可以应用于点量BT,也可以应用于其它任何需要的程序,独立于内核,不需要内核的启动。
批量获取信息接口:该部分是为了方便一次性取出大量信息时调用,可以通过调用少量接口函数返回一个信息的结构体或者结构体数组,包含常用的大量信息。
2.2常见的调用流程
首先,在程序启动的时候,根据实际需要,选择调用突破系统防火墙的接口将当前的应用程序以及相关进程加入防火墙的例外;调用接口检查操作系统的并发连接数限制,判断是否需要进行连接数的修改;调用UPnP穿透接口,将相关应用程序所有需要监听的端口,添加到UPnP设备中去――点量BT内核内部使用的TCP和UDP端口无需外部程序调用添加,内部会自动添加。
程序启动后,根据用户的界面操作,启动一个Torrent文件的下载。一般需要用户选择一个Torrent文件和下载的保存路径。启动Torrent文件时,只需要调用下载任务的启动接口即可,下载任务会自动启动下载,并立即返回该任务的句柄。
下载过程中应用程序可以随时调用下载任务的接口获取下当前下载的速度和进度、连接情况、Torrent中每个文件的进度等各种信息,可以随时调用下载任务的接口设置下载限速等。
下载任务启动成功后,内核不会自动停止该任务,需要应用程序主动调用停止和删除。一般地当检查到下载任务的进度到了100%或者状态是供种状态时,程序可以选择停止任务或者设置一个上传限速,继续上传。
程序结束前,需要调用下载任务的接口,将每个Torrent任务停止,然后调用内核的关闭接口,释放内核的所有资源。
注意:建议对BT相关操作尽量控制在一个线程内进行,除非特殊情况,尽量不要跨线程,这样便于避免系统内部需要等待不同线程锁,提高系统运行速度。这个可以参考演示程序源码中的实现。