真空泵厂家
免费服务热线

Free service

hotline

010-00000000
真空泵厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

全球最小的P2P软件 eMuleBT框架分析_新闻资讯_中关村在线种植

发布时间:2020-04-19 16:18:14 阅读: 来源:真空泵厂家

全球最小的P2P软件 eMuleBT框架分析_新闻资讯_中关村在线

下载:eMuleBT eMuleBT是一款开源的软件项目,俗称“变态驴”。因为同时集成了eMule和BT的功能,容量仅为460K,从而引起了一些人的注意。因为eMule和BT的功能比较感兴趣的人也确实不少,所以小记也花了不少工夫请专业人士对其进行了分析,现对其表叙如下,以飨读者。 eMuleBT是完全安装C++的思想来写的一款软件,这样他的类封装是比较好的,从整个软件构架上来说,就显得特别清晰了。

软件框架:eMuleBT分为两个框架,一个是UI,也就是用户操作界面,一个是内核,也就是实现eMule协议,BT协议通讯的核心部分。 UI部分是我们用户看到了比如“传输”,“搜索”,“共享”等操作界面,内核是我们通过UI来操作的,比如我们通过界面操作新加一个下载任务,任务在我们的UI上表现出来,其实是由内核来驱动的。

图1 eMuleBT的UI

为什么要分开呢?从大量的实际软件开发过程中来说,我们经常碰到对软件界面的需求改变,而实际的功能却不需要发生大的改变。很常见的例子是A公司需要的是一款针对娱乐用户的产品,而B公司需要的是一款针对企业用户的产品。但两者的共同需要是要下载这些文件。这样的结构有利于:1)分工合作,可以适合项目人员各司其职;2)结构清晰,有利于软件后期维护;3)模块化设计,有利于软件扩充;4)分开实现,有利于软件各部分移植 结构图如下:

图2 eMuleBT的结构图

界面部分相对简单一些,我们先说说核心部分,核心的结构我们用以张图来表示是比较清楚的:

图3 eMuleBT的核心结构

eMuleBT目前只对eMule和BT的核心做了比较好的封装,而http协议只是做个简单的封装,比如对BT种子的下载他用的就是自己的http类。

我们对整个emulebt进行了分析,大致可以把他的系统结构分成罗列成上面的平面组图关系。 现在我们分别介绍一下: BT内核:是对BT协议进行封装的一个类结构,比如握手,请求包等协议交互的总结构,而BT协议需要对文件操作的时候,就会使用公共的文件类来操作。 eMule内核:是对emule进行封装的一个类结构,比如和服务器的通讯,请求。而为了下载减少磁盘的损耗而使用了cache技术,就会用到cache类来操作。 Http内核:从技术上来分析,emulebt也有给http,ftp,mms,rtsp,p2s留有开发接口的,但实际只是预留了程序接口规范,并没有代码化,其中原因不得而知。回调类:eMuleBT的代码在开发的时候,估计是由两部分人员完成的,一部分是UI部分,一部分是由内核部分。在内核部分留有大量的回调入口,这样比较方便UI用户在开发的时候进行扩展,我们经常遇到文件下载完成的时候,我们操作界面需要对文件进行其它的操作,比如移动,播放等等。而预留的回调入口就显的非常有用了。

配置类:eMuleBT使用的是单执行文件的发行模式,她所有的默认配置全部都是由程序第一次运行的时候产生的。生成的配置文件会右配置类来支配给内核,比如同时连接数,最大,最下的下载速度等等。Emulebt支持多语言版本,在lang目录下会产生两个标准的语言版本,一个是英语版本,一个是简体中文版本。按照这两个标准版本就可以改写出其它的语言版本。

状态类:状态类是对软件的执行的状态进行检测和显示的类,比如下载的文件数量,字节数量,上传的数量,表现如下:

图4 eMuleBT的状态表现

定时器类:主要用户软件内需要定时更新或操作的事务管理类,它下辖的有UPNP

类,线程类,和host类. p2p技术里面经常把UPNP用来实现tcp直传的一种技术,但不同的设备有细小的差别,而且不同的设备支持的方法还不太一样,在软件启动的过程中,为了节约系统开销和同步,所以使用了定时器类来实现uPNP的寻址和交互。 有经验的软件开发者都知道,在windows系统下很多工作都是单步执行的,比如实现一个dns到Ip地址转换的过程,这种操作是比较耗软件资源的,如果使用线程来做会稍微改善一下这种局面,当然也还有更好的方法,但em还提高了效率。

共享类: emule和bt的共享机制不太一样,因而在共享类下面,eMuleBt又分出了emule的共享类和bt的共享类。Emule的共享是9m一个块的共享,而且他的共享还必须把hash值发到ed2k server上去(当然kad是另一种实现方式),而bt是由torrent文件决定了分块的大小和hash值。弄清楚这点后,也就明白了为什么共享类为什么要线程类了。Emule会把下载的完整包再提交给ed2k server,同时在UI里面对共享的内容负责显示。

任务类:是一个比较常用的类,emulebt对下载上传都看成一个任务,用户在操作界面对下载的停止,开始,排序都是对任务的操作。任务类和文件类之间联系的也是比较紧密的。

文件类:文件类是对文件操作的一个类,emule和bt都对这个类为基础实现了文件的操作,他封装了ntfs,fat等不同的文件系统的操作模式。

还有比较多的东西没有介绍完,我们将继续对这款软件进行分析。

古筝旗袍

花卉种植技术

兔子养殖网