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代码分析(一)相关推荐

  1. IpMsg代码分析(二)

    Ipmsg.cpp为其主要的实现文件,其中调用系统的 int WINAPI WinMain(HINSTANCE hI, HINSTANCE, LPSTR cmdLine, int nCmdShow)作 ...

  2. IpMsg代码分析(三)

    本次主要分析通信部分: Msgmng.cpp为通信处理部分的源文件,其中包括了几乎所有的socket通信代码. Class Msgmng为通信的管理类.构造函数如下: Line: 18 MsgMng: ...

  3. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  4. C#中类的继承 override virtual new的作用以及代码分析

    继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...

  5. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  6. lighttpd1.4.18代码分析

    lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1)  编辑 lig ...

  7. Device Tree(三):代码分析

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请 ...

  8. 使用Hadoop和ELK进行业务代码分析!分分钟捉到Bug!

    大数据是计算领域的新高地,它有望提供一种方法来应对二十一世纪不断增长的数据生成.越来越多的大数据爱好者正在涌现,越来越多的公司正在采用各种大数据平台,并希望提出以客户为中心的解决方案,帮助他们在竞争激 ...

  9. 20145328 《网络对抗技术》恶意代码分析

    20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...

最新文章

  1. Flutter 布局控件完结篇
  2. 王兴和张一鸣和我们的互联网启蒙
  3. android--------Popupwindow的使用
  4. 聊天IM的时间戳显示规则
  5. pushd popd
  6. MATLAB求解标准差
  7. 设计模式(一) 简单工厂模式
  8. 计算机拓扑结构定义,计算机网络拓扑结构的定义
  9. Python用最简单的代码画出一箭穿心
  10. ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
  11. Datatable 列名
  12. 汇编-ASCⅡ码转二进制码
  13. 有源滤波器——APF
  14. html电商app小图标素材,20套购物网站专用的图标素材包
  15. FPGA解析B码----连载7(完结篇)
  16. 微信小程序开发从入门到实战 --第1章 认识小程序
  17. 【CF】Codeforces 1702F
  18. 倒计时适用于各种数据大屏
  19. 社区APP运营步骤:获取用户需要几步走?
  20. matlab如何实现整除的编码

热门文章

  1. 高可用架构和系统设计经验
  2. 智能停车场管理系统多少钱一套?
  3. ora-24324 ora-24323 ora-28547
  4. 贵州省遵义市谷歌卫星地图下载
  5. 全景图解我国高铁数据,洞悉城市崛起
  6. VS2022安装教学(超详细易上手)
  7. 【Unity学习笔记】第一人称射击游戏
  8. 数据分析之Jupyter
  9. 中国培训行业营销模式与发展对策建议报告2022版
  10. 中科院院士谭铁牛:人工智能发展需要理性务实