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。
5、系统概述完成上述操作之后,就可以使用VC++ 6来编译、调试IP Messenger。
当然,在以后的分析中,我们将分析ipmsg的安装工程,那么就应当选择ipmsg-Win32 InstallerDbg配置作为当前活动工程,编译出Debug版的安装工程。
转自:http://hi.baidu.com/%B1%D5%C4%BF%B3%C9%B7%F0/blog/item/6325318f3f1c9d1eb31bbac5.html