首页 emule基本架构

emule基本架构

举报
开通vip

emule基本架构Emule框架 Emule的概述 (1)​ emule_p2p:主要处理两个客户端之间的交互。 (2)​ emule_data_manage:主要处理数据输入输出,数据验证,数据纠错,数据保存。 (3)​ emule_hub:主要处理与迅雷服务器(hub、tracker)的交互。 (4)​ emule_cs:主要处理与ed2k服务器的交互。 (5)​ emule_kad:主要处理DHT协议,在DHT网络中寻源。 (6)​ emule_nat_traverse:用于与veryCD emule版本进行内网穿透。 emu...

emule基本架构
Emule框架 Emule的概述 (1)​ emule_p2p:主要处理两个客户端之间的交互。 (2)​ emule_data_manage:主要处理数据输入输出,数据验证,数据纠错,数据保存。 (3)​ emule_hub:主要处理与迅雷服务器(hub、tracker)的交互。 (4)​ emule_cs:主要处理与ed2k服务器的交互。 (5)​ emule_kad:主要处理DHT 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,在DHT网络中寻源。 (6)​ emule_nat_traverse:用于与veryCD emule版本进行内网穿透。 emule_p2p 每个文件的下载需构造一个task,提供该文件的源是称为resource,与该resource的每个连接是一个pipe,对于同一个pipe实现了两个逻辑——上传和下载。Emule目前的resource上只开启一个连接。因此task、resource和pipe的关系为: Task Resource A Pipe emule_download_pipe/emule_upload_pipe Resource B Pipe emule_download_pipe/emule_upload_pipe …… …… …… Resource N Pipe emule_download_pipe/emule_upload_pipe 任务的组成: 任务主要有以下元素组成: (1)​ emule_download_logic: 该类对任务中的一些关键事件进行监听,并对这些事件进行处理。任务中的关键事件包括文件创建、文件完成、服务器连接成功、服务器连接失败、连接握手成功、数据管理器出现异常等事件。 (2)​ emule_data_manager: 该类对数据进行管理,自动处理数据的输入输出,数据纠错,状态保存等。任务通过其监听接口对该类进行管理。 (3)​ emule_source_list: 备份当前的所有下载资源。 (4)​ dispatcher_bridge: 每一个新到达的下载资源都会加入到该类中,该类对所有的下载资源进行操作,包括建立连接、重连、断开连接等。 (5)​ emule_tracker_logic: 处理与后台服务器打交道的逻辑。包括tracker查源,向hub 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 下载完成信息,向hub查询文件信息等。 每个任务有一个调度器,调度器通过获取resource的信息来决定创建pipe的个数,对于emule,每个resource从头至尾只创建一个pipe,通过pipe的信息和当前文件的信息,调度每个pipe的下载范围。每个resource有一个实现读写数据的对象emule_p2p_tcp_handler。该对象对socket进行封装,实现异步的读写。 Emule_peer类结构如下: 任务接口实现详看IEmule.doc emule_data_manage 数据管理器主要功能为数据写磁盘emule_data_output和数据读磁盘emule_data_input,读写磁盘操作有文件io系统xl_file_io_system实现。在写磁盘过程中对数据进行验证emule_part_check,验证失败将对数据进行纠错处理。纠错分aich和ich修复。 确认正确的数据或是纠错成功的数据,将计算它们的bcid,提供给迅雷p2p使用。 纠错实现: 数据管理器通过监听接口向emule_download_logic报告当前出错的块,调度器通过error_correct_interface获取错误块的信息,从新下载该块,并避免从错误的源获取。error_correct_interface接口为: struct correct_process_info { range_queue complete_range_queue; std::string resource_id; }; virtual void error_ranges( std::vector& result ) = 0; // 报告错误块 virtual bool can_correct( const range& r, IDataPipe* pipe_ptr ) =0; // 判断该块是否能从制定pipe上下到非错误的数据。 virtual void get_correct_process_info( const range& r, std::vector& result ) = 0; // 获取纠错进程信息 emule_hub 迅雷的hub服务器主要管理已经完成下载的资源,tracker服务器提供正在下载过程中的资源。Emule在启动前要分别到hub和tracker上查询迅雷服务器保存的该文件的emule资源。 emule_cs emule有提供源信息的服务器,称为ed2k服务器,该服务器不是迅雷公司维护,主要为国外的服务器。 emule_kad emule实现的DHT网络,用于分布式寻源,以实现无服务器情况下依然能找到源。 emule_nat_traverse VeryCD emule版本的emule自己设计了一套内网穿透的协议,主要用于veryCD版本的emule之间,为了实现与其穿透连接,thunder也根据其协议实现与其穿透的功能。
本文档为【emule基本架构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_822081
暂无简介~
格式:doc
大小:59KB
软件:Word
页数:4
分类:互联网
上传时间:2011-05-02
浏览量:23