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。

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

转载于:https://www.cnblogs.com/hnrainll/archive/2011/07/05/2098308.html

IPMSG飞鸽传书——编译源代码的方法相关推荐

  1. IPMSG飞鸽传书3——协议翻译

     最近看到一些朋友在编写网络程序是遇到一些问题,故把以前做IPMSG时翻译的文档贴过来,希望对网络编程新手有所帮助,在寻找编程项目的同学们也可参照此文档写出自己的IPMSG. 本文只包含其中几个比 ...

  2. ipmsg飞鸽传书系统即时通讯

    据美国科技IM Mashable飞鸽传书简介报道,2009年4月,ipmsg推出了自己的飞鸽传书系统--即时通讯.自此之后,ipmsg便努力增加这个飞鸽传书系统的功能.从目前形势来说,ipmsg在即时 ...

  3. IPMsg飞鸽传书网络协议解析手记

    相信很多人都使用过飞鸽传书,这个小工具在局域网传输数据高效而便捷,自己在大二的时候就想看看飞鸽传书的源码,但那时候自己的水平有限,这几天有机会重写飞鸽传书,也对IPMSG的网络协议做了深入的研究,这里 ...

  4. [转载]IPMSG(飞鸽传书)协议翻译

    /********************************************************** *本人(ypxing)根据下面的协议,C语言写的ipmsg(聊天,文件/文件夹传 ...

  5. FreeEIM 2.6 最新版飞鸽传书

    FreeEIM 2.6 最新版飞鸽传书 目前,多数企业都存在着一个严重的安全隐患:即时通讯软件,让企业信息极容易对外暴露.如果企业的核心安全机密,一旦泄密将带来灾难性的后果. 那么,如何在使用沟通工具 ...

  6. 也使得飞鸽传书2007的功能越来越强大!

    自从飞鸽传书2007自发布以来,产品以其独特的设计.新颖的风格.完善的服务而受到了用户的好评,随着用户量的不断增加,用户在使用中给程序提了很多中肯的意见或建议,也使得飞鸽传书2007的功能越来越强大! ...

  7. linux 源码安装 飞鸽,Ubuntu中安装编译飞鸽传书

    最近一直在学习Ubuntu,Windows下和局域网其他人传文件都用"飞鸽传书",于是在Ubuntu中文论坛查找,自己也编译了一个,挺好用,完全有着Windows版本的功能. IP ...

  8. 关于飞鸽传书软件的实现原理,配置及使用方法

    一.简介 飞鸽传书是由日本人所发明的免费软件,是一款局域网内即时通信软件,基于TCP/IP(UDP),可运行于多种操作平台(Win,Mac,UNIX,Java), 并实现跨平台信息交流.不需要服务器支 ...

  9. 在Linux下使用ipmsg(飞鸽传书)

    在Linux下使用ipmsg(飞鸽传书) ipmsg是个不错的局域网通讯软件,非常小巧,无需服务器端,使用非常方便. 在Linux下使用需要自行编译. 在官方网站下载源码:http://www.ipm ...

最新文章

  1. NASA打算送机器蜜蜂去探索火星上的生命痕迹
  2. windows下部署MySQL 8.0.11
  3. LA 6892 The Safe Secret(矩阵连乘)
  4. 新会计科目的编号及内容
  5. 以用户体验为导向的设计表现
  6. Python到底是个什么东西
  7. SAP UI5 message.showMessageToast
  8. Timer和TimerTask详解
  9. 调查谋杀案以换取Obra Dinn
  10. 认识Windows Communication Foundation
  11. Java写一个快速排序_快速排序java实现
  12. 仓库管理员怎样做台账_仓库主管岗位职责
  13. activity finish后没有destroy_Activity 基础知识点
  14. ABAQUS2017帮助文档查看_51CAE_新浪博客
  15. Python井字棋游戏开发带实验报告
  16. c++教你唱响天空之城(源码奉上)
  17. 电路中容易混淆的三角形符号
  18. ie11下下载文件,文件名乱码的解决方法
  19. Knative-serving资源详解
  20. “疫情待业在家做跨境电商,两年全款买了房”:你看不起的行业,往往很赚钱...

热门文章

  1. npm命令 VS yarn命令
  2. 用maven创建Spring MVC项目
  3. Django--models一对多实例
  4. flex swf和movieclip之前的微妙关系
  5. 片(Slice)结构
  6. 世界-中国-省-市-县 天气预报
  7. Logback 配置文件例子
  8. leetcode算法题--Number of Islands
  9. linux进程--写时拷贝技术copy-on-write(七)
  10. 网络传输大端序_基于大端法、小端法以及网络字节序的深入理解