eMule中的 CAsyncSocketEx 类

Windows上的异步通信程序库CAsyncSocketEx Windows上的异步通信程序库CAsyncSocketEx       CAsyncSocketEx是一个叫Tim Kosse的2003年发布到codeproject.com上的一个小程序库(http://www.codeproject.com/KB/IP/casyncsocketex.aspx),说是MFC的CAsyncSocket的替代品和改进品。   作为异步通信,CAsync 阅读详情

 说说eMule中的大多数通信类的基类CAsyncSocketEx

1、先看看静态链表m_spAsyncSocketExThreadDataList

其数据成员定义如下:

 struct t_AsyncSocketExThreadData
 {
  CAsyncSocketExHelperWindow *m_pHelperWindow; //线程中的socket事件接收窗口
  int nInstanceCount; //线程中CAsyncSocketEx  实例的个数
  DWORD nThreadId; //线程id
 }

在每个线程中,只有一个m_pHelperWindow,所有的CAsyncSocketEx  实例的socket事件都会发送到这个窗口。

m_pHelperWindow可以依据收到的通知消息message,获取相应的CAsyncSocketEx 实例 指针。

1、CAsyncSocketEx  在socket 事件通知消息派发上,速度要快于CAsyncSocket。

m_pHelperWindow里面有一个数组指针m_pAsyncSocketExWindowData,其成员对应线程中的每一个socket信息。

CAsyncSocketEx  的实例调用WSAAsyncSelect(SOCKET hSocket, HWND hWnd, int wMsg, long lEvent)  函数将hSocket上发生的事件通知发送消息wMsg给hWnd,其中wMsg-WM_SOCKETEX_NOTIFY 即为m_pAsyncSocketExWindowData中的数组下标,因此,在m_pHelperWindow接收到消息通知时,可以直接通过

m_pAsyncSocketExWindowData[wMsg-WM_SOCKETEX_NOTIFY]得到对应CAsyncSocketEx  指针,而在CAsyncSocket中,是通过socket线程状态中的m_plistSocketNotifications遍历获取socket指针的,因此,在线程的socket数量很多的情况下,CAsyncSocketEx  在事件通知消息派发上,速度要明显快于CAsyncSocket。

2、CAsyncSocketEx  提供一个灵活的分层系统,可以方便地在它的实例中添加代理支持,支持socks 4、socks 4a、socks 5 和http 1.0 、http1.1代理,以后还会增加SSL 安全连接支持。

eMule电驴eDonkey源代码精辟分析 最近给一家公司写一个类似电驴的P2P客户端.写的相当的累,但是收获也很大,对电驴的代码进行了深入的分析,现在把所得贡献给大家,网上有很多对电驴协议的分析,其实有些地方是误导大家了,中国的程序员还是很小家子气,就是怕别人超过自己.进入正题,电驴的协议和各种常量参数定义在opcodes.h中,#define OP_EDONKEYHEADER  0xE3#define OP_KADEML 阅读详情

相关推荐

CAsyncSocketEx

很不错的一个类,用法和CAsyncSocket 一样,增加了proxy等功能的支持

CAsyncSocketEx浅析

CAsyncSocketEx是Tim Kosse发布到codeproject.com一个开源库。利用消息驱动,通过CAsyncSocketEx类封装win32的网络接口。 以下通过一个简化的CAsyncSocketEx对其实现进行初步解析。 通过CAsyncSocketEx的create和消息处理函数WindowProc可以很清晰的整理出整个库的脉络。   BOOL CAsyncSock

pokeyode的专栏 1295

eMule.0.50a-XtremeII.v8.2-bin

eMule XtremeII并不是eMule Xtreme,而是另一个mod,作者为punkydust,基于天使骡eMule ScarAngel制作。 eMule v0.50a XtremeII v8.2修正了ScarAngel v4.2的很多bug,添加了魔鬼骡eMule Mephisto的来源控制功能,移除了ScarAngel的开启声音,天使骡用户可以尝试。

FileZilla FTP服务器源代码分析06

CServer在Create()时,通过CListenSocket来监听标准的FTP 21端口,通过CAdminListenSocket来监听admin端口(缺省是14147),这两个类都继承于CAsyncSocketEx,这个类是FileZilla中所有socket处理的基类,搞清楚这个类可以清楚明白socket处理的机制。 这个类的名字来源于MFC类CAsyncSocket,CAsyncSo

quxiantao的专栏 737

emule xtreme 8.1下载

一款很好用的电驴下载软件,可以下载电影、音乐、图片等

如何缩减layout电路面积?减少晶体管的数量——以全加器为例【VLSI】

How to reduce the number of transistors to reduce circuit area? -- Take the Binary Full Adder as an example 优化面积的方法 1. 减少晶体管的数量 2. 改变gate matrix的布局

Jie_MSD的博客 6433

回调函数实例

class CAsyncSocketExHelperWindow { public: CAsyncSocketExHelperWindow() { //Initialize data m_pAsyncSocketExWindowData = new t_AsyncSocketExWindowData[512]; //Reserve space for 512 active ...

r2100的专栏 456

【一步到位】Android Studio 实现安卓连接阿里云物联网云平台

最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。

m0_73799445的博客 1万+

读懂源码系列-FileZilla Server 设计原则分析-socket 事件处理流程(4)

1.前言         上一篇讲到 socket  2.处理流程 static LRESULT CALLBACK CAsyncSocketExHelperWindow::WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) void CListenSocket::OnAccept(int nErrorCode)

systomnet的专栏 724

保姆级教程:手把手教你从NASA Earthdata免费下载ASTER L2地表温度数据(附shp文件拖拽技巧)

本文提供了一份详细的ASTER L2地表温度数据下载指南,涵盖从NASA Earthdata注册、数据定位到shp文件拖拽技巧的全流程。特别针对新手常见问题如邮箱选择、密码设置、云量筛选等给出实用解决方案,帮助用户高效获取遥感数据并避免常见陷阱。

weixin_42662605的博客 424

AgentScope实战指南:从源码解析到Qwen模型的多Agent协作开发

本文提供了AgentScope多智能体开发框架的实战指南,详细解析了其核心架构与工作原理,并展示了如何利用Qwen模型构建从单智能体对话到多智能体协作的完整应用。通过两个具体代码实例,指导开发者快速上手环境配置、模型接入与智能体编排,实现高效的多Agent系统开发。

ff678的博客 640

090828项目进展:学习emule源码4,CAsyncSocketEx

/*CAsyncSocketEx by Tim Kosse (Tim.Kosse@gmx.de)            Version 1.2 (2003-03-28)--------------------------------------------------------Introduction:-------------CAsyncSocketEx is a replacemen

ensungm的专栏 963

从零搭建无人机仿真环境:ROS 2与Gazebo Fortress实战指南

本文提供了一份详细的无人机仿真环境搭建实战指南,基于Ubuntu 22.04系统,整合ROS 2 Humble与Gazebo Fortress两大核心工具。通过分步讲解安装、配置及桥接过程,并引入PX4飞控与XTDrone2工具链,帮助开发者快速构建一个稳定、高效的无人机算法开发与测试平台,有效降低真机测试的成本与风险。

water的专栏 429

eMule源码分享

这里分享一款资源分享与下载工具——电驴,其实严格来说,应该叫电骡,这是我维护的版本,eMuleVeryCD版本,VeryCD是一个不错的资源分享网站:http://www.verycd.com/。大概在08年之前,中国市场流行的下载工具大概有三款:网际快车(flashget)、电驴(eMule)和迅雷,后来前两者都没落了。电驴的源码也开源了,迅雷抓住这个机会分析了电驴的下载协议(Kad...

左雪菲的专栏 4895

ACC自适应巡航功能

自适应巡航功能(Adaptive Cruise Control)通过传感器检测车辆前方形式环境,控制自车行驶速度以达到定速巡航、跟车巡航、跟车启停,并支持超车辅助等功能。1. 定速巡航一般可设置车辆在30~150km/h的定速范围内巡航2. 跟车巡航车速0~150km/h范围内的跟车巡航3. 跟车启停30s内:自车随之起步,驾驶员无需操作30s~600s内:驾驶员按钮激活 或 轻踩加速踏板激活起步600s后:ACC退出激活状态进入待激活状态,电子驻车制动EPB会自动启动4. 超车辅助。

LXY_LXY_的博客 1385

基于深度学习的心律失常的自动分类

基于深度学习的心律失常的自动分类 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 心律失常的危害与检测的重要性 心律失常是一种常见的心血管疾病,严重威胁着人们的健康和生命。据统计,全球每年有数百万人因心律失

AI架构师小马 1143

eMule源代码分析(二)

 eMule源代码解析 -2 2006-10-16 17:41分块机制--正确传输资源的保证 为了加快内容分发的速度,分块处理是一种简单有效的方法。emule中对每个文件都进行了分块处理。另外分块还有一个好处就是如果保留了每一分块的hash值,就能在只下载到文件的一部分时判断出下载内容的有效性。emule在获取每个共享文件的信息时,就对它进行了分块处理,因此如果要知道emule中的分块

Welcom to zougangx's blog 1352

am62x A53与R5F通信

AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。

鹰之翔 1361

eMule源代码解析(二)

(from:http://hi.baidu.com/elseif/blog/item/d94998f9d977e258252df2c1.html) 1,分块机制——正确传输资源的保证 继续解析CKnowFile类 为了加快内容分发的速度,分块处理是一种简单有效的方法。emule中对每个文件都进行了分块处理。另外分块还有一个好处就是如果保留了每一分块的hash值,就能在只下载到文件的一部分时判...

ruilinruirui 93

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

emule udp 穿透传文件

一、引言 VeryCD emule 自去年推出LowToLow功能以来,经过很多网友热心的测试, 到限制为止已经比较稳定的运行了,VeryCD emule 是一个开源软件,我们遵循GPL的开放精神,开放了所有代码,但是emule的各项功能都有很大的完善空间, 我们相信还有很多网络编程爱好者热爱emule这个软件,但是由于没有相关的文档资料,估计想参与的网友可能也不知道该从何下手,因此我们准备

410

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VeryCD emule L2L 实现原理和实现方法介绍(一)

一、引言VeryCD emule 自去年推出LowToLow功能以来,经过很多网友热心的测试, 到限制为止已经比较稳定的运行了,VeryCD emule 是一个开源软件,我们遵循GPL的开放精神,开放了所有代码,但是emule的各项功能都有很大的完善空间, 我们相信还有很多网络编程爱好者热爱emule这个软件,但是由于没有相关的文档资料,估计想参与的网友可能也不知道该从何下手,因此我们准备在这里陆

677

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

支持SSL的封装类--CAsyncSocketEx

IntroductionCAsyncSocketEx is an MFC-less replacement for CAsyncSocket which does also offer a flexible layer code. This class was written because CAsyncSocket is not the fastest WinSock wrapper and

蓝剑专栏 2276

CAsyncSocket的封装使用

步骤一:从CAsyncSocket派生出CAsyncSocketEx class CAsyncSocketEx: public CAsyncSocket 添加函数 SetResponseWnd(CWnd*pWnd);//pWnd是CAsyncSocket中函数具体响应的类对象指针 在CAsyncSocketEx中重写基类虚函数  virtual void OnClose(int

csw_100的专栏 1191

分享一款 ftp 软件 —— filezilla的源码

注意: 客户端使用 C++11 开发,而之所以服务器端的 filezillaserver 和 filezillaserver 选择使用较新的 VS2015,是因为服务器端的代码使用了 C++14 的一些特性,而 VS2013 是不支持 C++14 的所有的特性的。3. 编译filezillaserverinterface用VS2015打开filezillaserverinterface\filezillaserver\filezillaserverinterface.sln编译即可。

左雪菲的专栏 1588
上一篇: 第一次写BLOG
下一篇: 谈谈 eMule 中的 内存管理器类 CMemPoolMgr
InsideKernel
博客等级 码龄19年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值