IP Messenger 详细分析
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的基本开发思想。