emule(电驴/电骡)源码分析

void CUpDownClient::ConnectionEstablished():

emule中, CUpDownClient 代表了一个peer。一个peer会被放置到各种队列中去。比如,还未连接的peer被放入到待连接队列中。其它队列中保存的是peer的指针,这样可以节省内存。

函数ConnectionEstablished()其意思很明显:连接建立后调用。

一个peer连接后,需要做什么呢?

1 从connecting队列中删除。

2 如果本emule还未获取到自己的公网IP,则通过这个peer获取自己的公网IP。

3 更新peer在kad网络中的状态。

4 如果正在与这个peer聊天,则更新这个peer的聊天状态。

5 更新download状态。 如果正等待从这个peer上download数据,则马是上向这个peer发出下载请求。

6 更新reask状态。暂时不知道reask是针对什么情况出现的。

7 更新upload状态。如果处于等待向这个peer上传数据的状态(收到了这个peer的下载请求,这个peer会位于上传队列中),则马上向这个peer 发出同意上传请求的回复。

8 如果先前向这个peer发出文件列表请求的命令(可能通过pop menu),则发出请求paket。

9 如果有很多paket待发给这个peer,则全部发出去。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值