IP Messenger 详细分析(飞鸽传输ipmsg)

来源:互联网 发布:mac推出是什么意思 编辑:程序博客网 时间:2024/06/05 16:15

一、系统概述

  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.MAKVC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6把MAK文件转换成DSP文件来处理IPMSG.MDP后缀MDP(Microsoft DevStudio Project的简称)是老版本的项目文件,相当于DSP文件PROT-ENG.TXT 英文版的协议描述PROTOCOL.TXT日文版的协议描述README.TXT英文版的READMEREADME-J.TXT日文版的README

IP Messenger的SRC目录内容描述在列表1.2,SRC目录及主要文件。

属性名称描述目录INSTALL安装程序源代码目录文件BLOWFISH.CPP加密算法源文件BLOWFISH.H加密算法头文件BLOWFISH.H2加密算法随机数头文件CFG.CPP系统配置源文件IPMSG.CPPIPMSG的APP源文件IPMSG.HIPMSG头文件LOGDLG.CPP日志DLG源文件LOGMNG.CPP日志处理源文件MAINWIN.CPPIP Messenger主窗口源文件MISCDLG.CPP消息DLG,关于DLG,以及控件子类化等源文件MSGMNG.CPPSocket管理源文件PLUGIN.CPPDll plugin加载源文件RECVDLG.CPP接收消息处理源文件SENDDLG.CPP发送消息处理源文件SETUPDLG.CPPIP Messenger属性配置源文件SHARE.CPP文件传输接收管理源文件TAPP.CPP应用程序类源文件TDLG.CPPDLG类源文件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的基本开发思想。