ed2k 网络中搜索资源并选择资源下载的分析及eMule源码梳理

本文分析了eMule客户端如何在ed2k网络中搜索资源并下载,涉及搜索请求、搜索结果、资源获取与建立等步骤。通过解析搜索字符串、处理服务器响应,eMule构建搜索列表并管理下载任务。CSearchList和CSearchFile类负责搜索信息,CPartFile类表示下载任务。eMule采用信用机制确保公平分享,CUploadQueue管理上传任务。此外,CUpDownClient是核心类,处理上下行通信。
摘要由CSDN通过智能技术生成

上一篇博客中,客户端已连接到ed2k网络及客户端与服务器交互的eMule源码梳理,这里将开始搜索资源并下载及客户端与客户端交互的eMule源码梳理

emule 源码下载地址  http://download.csdn.net/detail/huang_rong12/9506732

搜索资源并下载,这是一个即包含和和服务器交互还包含与另一些客户端交互。所以会先说明和服务端交互的情况(搜索资源,选择资源),在说明下载(与客户端交互)。

搜索资源是发送关键词到服务器,服务器会根据关键词返回信息,当然这些信息是通过消息传递的具体消息如下:

6.2.9 搜索请求

客户发送给服务器的。消息使用用户的一个搜索字符串搜索一个文件。消息大小是可变的。搜索字符串包括布尔运算符’AND’,’OR’, ’NOT’。用户可以详细设置文件的类型大小也可以设置开始位置(例如:展示给我至少5个其他客户端的结果)

名称

占用字节数

默认值

说明

Protocol

1

0xE3

 

Size

4

 

不包括标题和size字段的信息大小

Type

1

0x16

OP_SEARCHRESULT opcode

Parsed search string

不定

NA

下面所描述的搜索字符串结构

Result list

不定

NA

搜索结果列表

Parsed search string

不定

NA

解析搜索字符串,格式如下

File Type Constraint

不定

NA

可选的。一个字符串约束。字符串值是Audio”, ”Video”, ”Pro” or ”Image”三者之一。类型域分别对应0x1 0x0 0x3

Min Size Constraint

不定

NA

可选择的,一个整型约束。以兆字节计算的文件大小。类型域有4位:0x1 0x1 0x0 0x2

Max Size constraint

不定

NA

可选择的,一个整型约束。以兆字节计算的文件大小。类型域有4位:0x2 0x1 0x0 0x2

Availability Constraint

不定

NA

可选择的,一个整型约束。搜索文件客户数量的最小上限,类型域有4位:0x1 0x10x0 0x15

Filename Extension constrain

不定

NA

可选择的,一个整型约束。类型域有3位:0x1 0x0 0x3

 

解析搜索字符串格式

解析字符串编码是通过二差树和’AND’,’OR’ ,’NOT’布尔运算符以及字符串操作数。二差树是按照先序编码进行的。操作是编码两位字节值是

The tree is encoded in pre-order . The operators0x0, 0x100, 0x200分别代表了’AND’, ’OR’ 和’NOT’。字符串按照TLV格式进行编码是一个以字节的值和一个两字节的长度。注意当字符串是以各自的时候它代表字符串操作(没有运算符)。以后的eMule 编码版本中指通过单独的字符串’AND’来编码搜索表达式,由空格代替’AND’。由’AND’运算符将连续的单词分开来组成一个句子。

可选择的约束格式

约束数列条目。每一个条目有’AND’描述符开始(2-byte0x00)紧跟着是编码约束。因此一个完整的搜索行格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值