科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件全球最小的P2P软件 eMuleBT框架分析

全球最小的P2P软件 eMuleBT框架分析

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

eMuleBT是一款开源的软件项目,俗称“变态驴”。因为同时集成了eMule和BT的功能,容量仅为460K,从而引起了一些人的注意。

作者:读报 来源:中关村在线 2009年12月7日

关键字: VeryCD电驴

  • 评论
  • 分享微博
  • 分享邮件
 eMuleBT是一款开源的软件项目,俗称“变态驴”。因为同时集成了eMule和BT的功能,容量仅为460K,从而引起了一些人的注意。因为eMule和BT的功能比较感兴趣的人也确实不少,所以小记也花了不少工夫请专业人士对其进行了分析,现对其表叙如下,以飨读者。
eMuleBT是一款开源的软件项目,俗称“变态驴”。因为同时集成了eMule和BT的功能,容量仅为460K,从而引起了一些人的注意。因为eMule和BT的功能比较感兴趣的人也确实不少,所以小记也花了不少工夫请专业人士对其进行了分析,现对其表叙如下,以飨读者。

    eMuleBT是完全安装C++的思想来写的一款软件,这样他的类封装是比较好的,从整个软件构架上来说,就显得特别清晰了。

    软件框架:

    eMuleBT分为两个框架,一个是UI,也就是用户操作界面,一个是内核,也就是实现eMule协议,BT协议通讯的核心部分。

    UI部分是我们用户看到了比如“传输”,“搜索”,“共享”等操作界面,内核是我们通过UI来操作的,比如我们通过界面操作新加一个下载任务,任务在我们的UI上表现出来,其实是由内核来驱动的。


全球最小的P2P软件 eMuleBT框架分析

图1 eMuleBT的UI

    为什么要分开呢?从大量的实际软件开发过程中来说,我们经常碰到对软件界面的需求改变,而实际的功能却不需要发生大的改变。很常见的例子是A公司需要的是一款针对娱乐用户的产品,而B公司需要的是一款针对企业用户的产品。但两者的共同需要是要下载这些文件。这样的结构有利于:

1) 分工合作,可以适合项目人员各司其职;
2) 结构清晰,有利于软件后期维护;
3) 模块化设计,有利于软件扩充;
4) 分开实现,有利于软件各部分移植
    结构图如下:

全球最小的P2P软件 eMuleBT框架分析
图2 eMuleBT的结构图

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

全球最小的P2P软件 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目录下会产生两个标准的语言版本,一个是英语版本,一个是简体中文版本。按照这两个标准版本就可以改写出其它的语言版本。

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

全球最小的P2P软件 eMuleBT框架分析
图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等不同的文件系统的操作模式。

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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章