1. 程式人生 > >IPMSG飛鴿傳書1——編譯原始碼的方法

IPMSG飛鴿傳書1——編譯原始碼的方法

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工程檔案,如下圖所示。

IPMSG飛鴿傳書1鈥斺敱嘁朐創氳姆椒

單擊“確定”按鈕,系統根據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”對話方塊,如下圖所示。

 IPMSG飛鴿傳書1鈥斺敱嘁朐創氳姆椒

  IP Messenger的工程配置有6個,分別是Release的英文、日文以及Debug的ipmsg工程和安裝工程。通過選擇不同的配置,可以編譯出不同的工程。根據需要,我們選擇ipmsg-Win32 Debug配置作為當前活動工程,此編譯配置可以編譯出Debug版的ipmsg。

單擊“Project”選單,選擇“Settings…”,彈出“Project Settings”對話方塊,選擇“C/C++”標籤欄,如下圖所示。

 IPMSG飛鴿傳書1鈥斺敱嘁朐創氳姆椒

  可以看到,在“Preprocessor definition:”中,工程使用了“JAPANESE”巨集定義,也就是說,編譯後的Debug版的ipmsg是日文版。當然,可以根據需要,修改此巨集為“ENGLISH”,就可以編譯出Debug版的英文ipmsg。

5、系統概述完成上述操作之後,就可以使用VC++ 6 來編譯、除錯IP Messenger


當然,在以後的分析中,我們將分析ipmsg的安裝工程,那麼就應當選擇ipmsg-Win32 InstallerDbg配置作為當前活動工程,編譯出Debug版的安裝工程。

原文地址:http://blog.sina.com.cn/s/blog_4bf793ad0100lvi5.html