提前说明:从这页博客开始就会涉及eMule源代码的分析(或者说梳理更为合适),梳理源代码的目的在于让大家在看了一下原理后,想看下这些原理的具体实现(看eMule源代码)时轻松些,更有目标。所以在这里笔者也上传了eMule官方源码 http://download.csdn.net/detail/huang_rong12/9506732 ,若梳理的不好请见谅。
前面 已经介绍了ed2k的相关概念 ,本博客会先描述emule客户端使用场景,然后按照使用场景逐步进行分析。
Emule 客户端使用场景分析,当我们要下载一个ed2k 文件时 ,可以分为以下几步:
一 、启动emule客户端(这时候就开始初始化,主要是对Config文件夹下的文件(比如Server.met等)进行反序列化,生成相应实例,存储信息(包括ed2k服务器地址及端口号))。
二. 客户端必须连上某个服务器(可能会从服务器列表中依次尝试,直到连上为止,连上以后客户端就加入了emule网络,成为协议节点)。
三. 用户就向服务器传递ed2k连接(这是用户已知道ed2k连接的情况,如果用户不知道ed2k连接,就可向服务器发送关键词,服务器会返回很多链接,这时再提交连接就一样的过程了)。
四. 提交ed2k连接以后,就表示用户要下载文件,服务器就返回存储文件的文件源客户端。
五. 用户得到文件源客户