eMule电驴eDonkey从死到生
来源:互联网 发布:iot js 机 编辑:程序博客网 时间:2024/05/01 22:33
我带大家来研究一下eMule是如何运转的,
先说一个额外的话题,我强烈鄙视,'我思念的城市'这位网友,他在eNet程序员论坛menuregister(false, "forumlist") » 挨踢生涯 中发表的文章:c++程序员修炼真经之四,是全文抄袭我的原创,极度鄙视这种用别人的智慧装点
自己门面的人.
首先大家找到emule.cpp
CemuleApp::CemuleApp(LPCTSTR lpszAppName) :CWinApp(lpszAppName)
里面大量的版本信息啊,界面大小图标啊,加载gdiplus.dll,我们先不看,就看这句 m_UPnP_IGDControlPoint = CUPnP_IGDControlPoint::GetInstance();
这是在启动电驴的PnP控制
然后我们看BOOL CemuleApp::InitInstance() 这里面最主要的就是他的配置类的初始化,
这个配置类在eMule整个程序运行的过程中都会起到非常重要的作用,
thePrefs.Init();
更重要的马上就登场了 CemuleDlg dlg;
emuledlg = &dlg;
m_pMainWnd = &dlg;
我们立即转到 BOOL CemuleDlg::OnInitDialog() 去看看
这里面绝大部分都是eMule界面的一些参数预设置,但是最核心的一个步骤,老外也很不厚道啊,他隐藏的很神秘啊,现在我来为大家点出来
VERIFY( (m_hTimer = ::SetTimer(NULL, NULL, 300, StartupTimer)) != NULL );
在这里他启动了一个非常重要的定时器,
void CALLBACK CemuleDlg::StartupTimer(HWND /*hwnd*/, UINT /*uiMsg*/, UINT /*idEvent*/, DWORD /*dwTime*/)
我们来看他的
case 4
try {
theApp.downloadqueue->Init();
}
非常关键的一步,他在初始化他的下载队列,
theApp.listensocket->StartListening() 启动监听端口,
可以接受连接了
theApp.clientudp->Create() 创建UDP客户端
再看case 6
AfxBeginThread(RUNTIME_CLASS(CAICHSyncThread),THREAD_PRIORITY_BELOW_NORMAL,0);
这是他的智能HASH算法线程,以后会和大家讲到.从这时起整个电驴就跑起来啦
- eMule电驴eDonkey从死到生
- eMule电驴eDonkey源代码精辟分析
- eMule电驴eDonkey源代码精辟分析
- edonkey和emule电驴和电骡的区别
- 每日更新的电驴 eMule/eDonkey 服务器列表
- eDonkey|emule服务器
- emule--电驴
- eMule Virus,电驴 相关的 病毒
- 开源项目之电驴emule
- 电驴 emule 源码分析 (1)
- 畅游电驴/电骡(emule) 1.0 发布
- emule(电驴/电骡)源码分析
- 中文词进入全球电驴服务器(eDonkey servers)搜索关键词前100名
- Firefox火狐里如何使用emule电驴下载
- 电驴emule v0.50a安装与设置
- emule编译 vs2005+win7+最新版本电驴
- 畅游电驴/电骡(emule) 1.0 发布-下载网络资源的利器
- 电驴EMule.exe占CPU达90-99%问题的解决办法
- MSDN:Webcast 系列课程
- #pragma
- 软件项目版本号的命名规则及格式
- PHP字符串处理函数
- c/c++写的Mini Sniffer(嗅探工具)
- eMule电驴eDonkey从死到生
- PowerShell取得局域网中SQL Server数据库实例以及其他
- 又是一年离别时
- 迷茫
- Eclipse3.2.1中利用XDoclet Enterprise JavaBean创建Container Managed Entity Bean
- 开始→运行→输入的命令集锦
- 一个文件批处理程序代码发布
- #pragma pack() 和sizeof
- 关于SQL Server 2000遍历记录集时出现错误:Unkown error:0x800A0CB3的处理