eMule电驴eDonkey源代码精辟分析

最近给一家公司写一个类似电驴的P2P客户端.写的相当的累,但是收获也很大,对电驴的代码进行

了深入的分析,现在把所得贡献给大家,网上有很多对电驴协议的分析,其实有些地方是误导大家了,

中国的程序员还是很小家子气,就是怕别人超过自己.

进入正题,电驴的协议和各种常量参数定义在opcodes.h中,

#define OP_EDONKEYHEADER  0xE3
#define OP_KADEMLIAHEADER  0xE4

这是他的协议码,他大部分的通信包第一个字节都是OP_EDONKEYHEADER  0xE3,

这是他的客户端之间的协议

#define OP_HELLO    0x01 // 0x10<HASH 16><ID 4><PORT 2><1 Tag_set>
#define OP_SENDINGPART   0x46 // <HASH 16><von 4><bis 4><Daten len:(von-bis)>
#define OP_REQUESTPARTS   0x47 // <HASH 16><von[3] 4*3><bis[3] 4*3>
#define OP_FILEREQANSNOFIL  0x48 // <HASH 16>
#define OP_END_OF_DOWNLOAD      0x49    // <HASH 16>
#define OP_ASKSHAREDFILES  0x4A // (null)
#define OP_ASKSHAREDFILESANSWER 0x4B // <count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
#define OP_HELLOANSWER   0x4C // <HASH 16><ID 4><PORT 2><1 Tag_set><SERVER_IP 4><SERVER_PORT 2>
#define OP_CHANGE_CLIENT_ID  0x4D // <ID_old 4><ID_new 4>
#define OP_MESSAGE    0x4E // <len 2><Message len>
#define OP_SETREQFILEID   0x4F // <HASH 16>
#define OP_FILESTATUS   0x50 // <HASH 16><count 2><status(bit array) len:(

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
easyMule 功能特色具体介绍   全新界面,使用更简便更直观   1)完全简化主界面UI,采用页签Tab方式,其实也是兼容老的emule操作习惯,用户明确知道有哪些功能页面。我们的原则是“简单流程不花哨”即可。   2)服务器/KAD/统计信息,单独分“高级”功能组   3)精简“选项”设置,兼容初级高级用户,默认只显示基本设置,需要调整设置只需要切换“更多”。   4)搜索用特殊搜索按钮实现,方便直观,凸显互联网“搜索”的重要性,并且兼容下载任务的添加,既可输入关键词搜索,也可输入下载地址建立下载任务。   5)提供新建任务对话框,可以用户直接输入下载地址,选择下载目录,并且可以批量下载。   内网穿透,下载速度明显提升   这个Low2Low功能全面保留并且稳定发布,全面提升内网用户的下载速度。   边下边看,精彩内容在线播放   满足用户看热门美剧/韩剧的需求,全局一次最多只能有一个任务"边下边看",内部对整个文件在全局网络的平衡性和文件调度平衡性做好调度优化。   磁盘缓冲,最大限度保护硬盘   emule的内部代码的磁盘缓冲控制非常弱小,对于爱惜硬盘的一些驴友来说,最大1.5M的设置实在太小了;easyMule使用了全新的内存缓冲实现,可设置范围扩大了很多(512K-16M),满足部分内存很大而且需要保护硬盘的用户   全能下载,多种协议全面互通   除了支持ed2k协议下载外,也可支持http/ftp协议下载,http/ftp下载完成后,算完hash值,之后该下载文件就可以加入到分享资源队列中,成为ed2k网络中可分享的资源,提升其它电驴用户的下载速度。   快速搜索,一键直达搜索结果   按F3,输入关键词,即可快速在VeryCD站内查找各类资源。   按shift+F3,切换到电驴网络搜索(既可以通过电驴服务器搜索,也可以通过Kad网络搜索)   任意下载,下载目录任意指定   以前emule下载必须先下载到一个指定临时目录,下载完成了后还需要移动文件到"Incoming"(已下载)目录,当有时候用户设置跨磁盘分区设置的时候,移动文件带来很多性能消耗,这一点一直有用户抱怨为什么不能采取其它下载工具的做法;这次改动后,easyMule下载目录可以在新建任务的时候任意指定,这样下载完成后再也不需要移动文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值