IpMsg代码分析(一)
IpMsg代码分析 (一)
以下部分参考自:
http://www.vckbase.com/document/viewdoc/?id=1748
一、系统概述
IP Messenger是一款局域网内部聊天、文件传输工具,具有很多优点,如数据通讯不需要建立服务器、直接在两台电脑间通信和数据传输,支持文件及文件目录的传输,安全快捷以及小巧方便等优异特点,因此很多公司都采用它作为部门、公司内部的IM即时通信工具。
IP Messenger在程序结构方面采用了Windows SDK处理结构,通信方面采用了TCP/UDP通信方式,在文件传输处理方面采用文件映射技术,等等。通过分析IP Messenger的运行、工作原理,可以提高并加深对Windows处理流程的理解,提高SOCKET编程技术等,因此特对其源码进行分析,以抛砖引玉,共同提高大家的编程技术。
1、IP Messenger源代码的下载
在写这篇文章时,IP Messenger的最新版本是2.06,因此大家在下载时尽量选择最新版本下载。IP Messenger源代码的下载地址是http://www.ipmsg.org/,在网站的右上角,点击English page,网站转换到英文界面,网站有英文版以及其它语言的版本,当然还有中文版的链接(http://www.azhi.net/IPMsg/),建议大家尽量下载原版的英文版源代码,以利于学习。
2、IP Messenger源代码的目录及文件
IP Messenger源代码的目录结构及文件详见列表1.1 IP Messenger源代码主要的目录及文件:
列表1.1 IP Messenger源代码主要的目录及文件
属性 |
名称 |
描述 |
目录 |
SRC |
工程文件源代码和INSTALL目录 |
文件 |
IPMSG.MAK |
VC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6把MAK文件转换成DSP文件来处理 |
IPMSG.MDP |
后缀MDP(Microsoft DevStudio Project的简称)是老版本的项目文件,相当于DSP文件 |
|
PROT-ENG.TXT |
英文版的协议描述 |
|
PROTOCOL.TXT |
日文版的协议描述 |
|
README.TXT |
英文版的README |
|
README-J.TXT |
日文版的README |
IP Messenger的SRC目录内容描述在列表1.2,SRC目录及主要文件。
属性 |
名称 |
描述 |
目录 |
INSTALL |
安装程序源代码目录 |
文件 |
BLOWFISH.CPP |
加密算法源文件 |
BLOWFISH.H |
加密算法头文件 |
|
BLOWFISH.H2 |
加密算法随机数头文件 |
|
CFG.CPP |
系统配置源文件 |
|
IPMSG.CPP |
IPMSG的APP源文件 |
|
IPMSG.H |
IPMSG头文件 |
|
LOGDLG.CPP |
日志DLG源文件 |
|
LOGMNG.CPP |
日志处理源文件 |
|
MAINWIN.CPP |
IP Messenger主窗口源文件 |
|
MISCDLG.CPP |
消息DLG,关于DLG,以及控件子类化等源文件 |
|
MSGMNG.CPP |
Socket管理源文件 |
|
PLUGIN.CPP |
Dll plugin加载源文件 |
|
RECVDLG.CPP |
接收消息处理源文件 |
|
SENDDLG.CPP |
发送消息处理源文件 |
|
SETUPDLG.CPP |
IP Messenger属性配置源文件 |
|
SHARE.CPP |
文件传输接收管理源文件 |
|
TAPP.CPP |
应用程序类源文件 |
|
TDLG.CPP |
DLG类源文件 |
|
TLIST.CPP |
链表类源文件 |
|
TREGIST.CPP |
注册表操作类源文件 |
|
TWIN.CPP |
窗口类源文件 |
|
MSGSTR.H |
字符串常量头文件 |
|
TLIB.H |
类、结构等头文件 |
另外在SRC目录下,还有一个INSTALL目录,该目录中的文件是IP Messenger安装程序的源代码,其主要文件描述在列表1.3 INSTALL目录主要文件。
列表1.3 INSTALL目录主要文件
属性 |
名称 |
描述 |
文件 |
INSTALL.CPP |
安装程序源文件 |
INSTALL.H |
安装程序头文件 |
以上是IP Messenger的主要目录及其主要源文件的描述,通过列表我们可以清晰看出IP Messenger的功能分布。在以下的详细分析中,我们主要围绕着这些源文件而展开。
3、IP Messenger源代码的工程转换
由于IP Messenger是使用以前版本的VC编写的,因此在打开工程文件时,需要转换该工程文件为VC6版本的工程文件。
双击打开IPMSG.MDP文件,系统提示转换IPMSG.MAK工程配置文件到VC6下的工程文件,如下图所示。
单击 “是”按钮,确定将工程转换成VC6的工程。系统提示将MAK工程文件转换成DSP工程文件,如下图所示。
单击“确定”按钮,系统根据MAK文件生成IPMSG.DSP文件,以及VC6下的IPMSG.DSW文件,另外系统还生成了IPMSG.NCB和IPMSG.OPT两个文件。
4、IP Messenger的工程配置
IP Messenger的配置和目前VC6的工程配置有些不同,其安装工程文件和工程文件在混合在一起,不像VC6工程文件,不同的工程在不同的项目下,分别进行配置。
单击“Build”菜单,选择“Set Active Configuration…”,弹出“Set Active Project Configuration”对话框,如下图所示。
IP Messenger的工程配置有6个,分别是Release的英文、日文以及Debug的ipmsg工程和安装工程。通过选择不同的配置,可以编译出不同的工程。根据需要,我们选择ipmsg-Win32 Debug配置作为当前活动工程,此编译配置可以编译出Debug版的ipmsg。
单击“Project”菜单,选择“Settings…”,弹出“Project Settings”对话框,选择“C/C++”标签栏,如下图所示。
可以看到,在“Preprocessor definition:”中,工程使用了“JAPANESE”宏定义,也就是说,编译后的Debug版的ipmsg是日文版。当然,可以根据需要,修改此宏为“ENGLISH”,就可以编译出Debug版的英文ipmsg。
当然,在以后的分析中,我们将分析ipmsg的安装工程,那么就应当选择ipmsg-Win32 InstallerDbg配置作为当前活动工程,编译出Debug版的安装工程。
这节的系统配置概述就到此结束,下一节将要分析IP Messenger的系统运行框架及其流程,通过分析和学习,掌握Windows的基本开发思想。
未完待续。。。
IpMsg代码分析(一)相关推荐
- IpMsg代码分析(二)
Ipmsg.cpp为其主要的实现文件,其中调用系统的 int WINAPI WinMain(HINSTANCE hI, HINSTANCE, LPSTR cmdLine, int nCmdShow)作 ...
- IpMsg代码分析(三)
本次主要分析通信部分: Msgmng.cpp为通信处理部分的源文件,其中包括了几乎所有的socket通信代码. Class Msgmng为通信的管理类.构造函数如下: Line: 18 MsgMng: ...
- 20145236《网络攻防》Exp4 恶意代码分析
20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...
- C#中类的继承 override virtual new的作用以及代码分析
继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...
- 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...
- lighttpd1.4.18代码分析
lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1) 编辑 lig ...
- Device Tree(三):代码分析
2019独角兽企业重金招聘Python工程师标准>>> 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请 ...
- 使用Hadoop和ELK进行业务代码分析!分分钟捉到Bug!
大数据是计算领域的新高地,它有望提供一种方法来应对二十一世纪不断增长的数据生成.越来越多的大数据爱好者正在涌现,越来越多的公司正在采用各种大数据平台,并希望提出以客户为中心的解决方案,帮助他们在竞争激 ...
- 20145328 《网络对抗技术》恶意代码分析
20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...
最新文章
- Flutter 布局控件完结篇
- 王兴和张一鸣和我们的互联网启蒙
- android--------Popupwindow的使用
- 聊天IM的时间戳显示规则
- pushd popd
- MATLAB求解标准差
- 设计模式(一) 简单工厂模式
- 计算机拓扑结构定义,计算机网络拓扑结构的定义
- Python用最简单的代码画出一箭穿心
- ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
- Datatable 列名
- 汇编-ASCⅡ码转二进制码
- 有源滤波器——APF
- html电商app小图标素材,20套购物网站专用的图标素材包
- FPGA解析B码----连载7(完结篇)
- 微信小程序开发从入门到实战 --第1章 认识小程序
- 【CF】Codeforces 1702F
- 倒计时适用于各种数据大屏
- 社区APP运营步骤:获取用户需要几步走?
- matlab如何实现整除的编码