Web服務(wù)器 Mongoose 的介紹與安裝本文主要內(nèi)容如下:
1、Mongoose介紹Mongoose開(kāi)源項(xiàng)目的主頁(yè)是http://code.google.com/p/mongoose/。Mongoose是一個(gè)web服務(wù)器,通過(guò)提供一個(gè)web接口給它,它可以嵌入到現(xiàn)有的應(yīng)用程序中去。Mongoose web服務(wù)器的執(zhí)行是自滿足的,它不依賴(lài)于任何其他服務(wù)。如果你將它復(fù)制到任何目錄并執(zhí)行,它將將啟動(dòng)web服務(wù)并將當(dāng)前目錄作為主目錄、端口號(hào)是8080。當(dāng)然這些配置選項(xiàng)都可以通過(guò)配置文件mongoose.conf設(shè)置。 Mongoose它的前身是shttpd,它完全開(kāi)源和自由使用。它還具有如下特性:
2、Mongoose的編譯和使用關(guān)于Mongoose上面應(yīng)該已經(jīng)介紹了它的主要特性。所謂耳聽(tīng)為虛,眼見(jiàn)為實(shí),不過(guò)現(xiàn)在這個(gè)時(shí)代眼見(jiàn)也未必為實(shí),正所謂實(shí)踐見(jiàn)真知,下面還是來(lái)親身體驗(yàn)下。Windows版本的Mongoose安裝和使用,我就不介紹了,眾所周知Windows下面的軟件的安裝基本都是傻瓜式的。下面我介紹的是linux下mongoose的編譯和使用(我使用的linux是Ubuntu 10.04)。 首先去主頁(yè)上面下載Mongoose的源碼(mongoose-2.8.tgz )。將其解壓可以看到如下的文件列表: 圖1、mongoose源碼的文件列表 其實(shí)我們主要用到的就是mongoose.h/c文件,像main.c文件只是用來(lái)測(cè)試用的。如果你想將mongoose嵌入到你的項(xiàng)目中,主需要用到mongoose.h/c就ok了!而且以后主要的剖析工作就是放在mongoose.h/c上。其中的Makefile文件是用于編譯,生成可執(zhí)行文件和庫(kù)文件等。 用make linux命令就可以將源碼編譯為linux版本的mongoose,如下圖所示: 圖2、linux下面Mongoose的編譯和執(zhí)行 如上圖,當(dāng)我們輸入make命令的時(shí)候,會(huì)提示你帶相應(yīng)環(huán)境的參數(shù)make (linux|bsd|solaris|mac|windows|mingw),這里我們選擇linux。編譯完之后,生成了兩個(gè)文件:一個(gè)可執(zhí)行文件mongoose、一個(gè)庫(kù)文件_mongoose.so。你可以直接將_mongoose.so庫(kù)文件拿到你的項(xiàng)目中去使用(當(dāng)然是基于linux環(huán)境的項(xiàng)目,如果在Windows環(huán)境下是編譯出相應(yīng)的dll文件,去直接使用)。 從上圖可以看出,編譯完之后我們運(yùn)行了(./mongoose),看到Mongoose 2.8 started on port(s) [8080], serving directory [/home/netsky/Downloads/mongoose]。即現(xiàn)在就啟動(dòng)了web server,當(dāng)前工作目錄是/home/netsky/Downsloads/mongoose,端口號(hào)是8080。我們可以在瀏覽器中輸入http://localhost:8080/來(lái)訪問(wèn)web服務(wù)器(或者如果你跟我一樣是在Ubuntu是運(yùn)行在虛擬機(jī)中,你可以在外面的Windows系統(tǒng)中用瀏覽通過(guò)http://linux的ip:8080/來(lái)訪問(wèn)),如下圖所示: 圖3、訪問(wèn)mongoose開(kāi)啟的web服務(wù) 我們查看mongoose打出來(lái)的log,如下圖: 圖4、mongoose打印的log 從log可以看出有兩個(gè)client,一個(gè)是我剛才在linux里面通過(guò)瀏覽器打開(kāi)web服務(wù)的根目錄;另一個(gè)是我在Windows下面通過(guò)瀏覽器打開(kāi)web服務(wù)的根目錄。 3、Makefile的簡(jiǎn)單分析下面我們簡(jiǎn)單分析一下Makefile文件,看我們執(zhí)行make linux的時(shí)候,編譯了什么源文件,及編譯的一些選項(xiàng)。 從PROG= mongoose和LIB= _$(PROG).so可以知道編譯生成的執(zhí)行文件名和庫(kù)的名字; 從linux: 其中$(COPT)選項(xiàng)是我們make的時(shí)候跟的一些選項(xiàng),下面列出這些選項(xiàng)及其意義: all: # Possible COPT values: (in brackets are rough numbers for 'gcc -O2' on i386) Makefile就簡(jiǎn)單的分析到這了,現(xiàn)在應(yīng)該比較清楚可執(zhí)行文件及庫(kù)是怎么生成的了。(提示:Windows下面的編譯,Makefile文件中也已經(jīng)給出了,請(qǐng)查看Makefile文的后半部分。) 4、如何將Mongoose嵌入到應(yīng)用程序中目前Mongoose可以支持嵌入到C/C++、Python、C#,而且在下一個(gè)版本(2.9)將支持Ruby、Lua。但在這里我只介紹怎么樣將Mongoose嵌入到C/C++中。其實(shí)將Mongoose嵌入到C/C++應(yīng)用程序中很簡(jiǎn)單,因?yàn)镸ongoose本來(lái)就是用C編寫(xiě)的,因此可以非常簡(jiǎn)單的將它嵌入到你的應(yīng)用程序中。
關(guān)于如何編寫(xiě)類(lèi)似main.c代碼調(diào)用mongoose提供的接口,這個(gè)工作在本系列后面的文章中介紹。 至此,將Mongoose嵌入到你的C/C++應(yīng)用程序中的工作已經(jīng)完成,現(xiàn)在你執(zhí)行./test即可以應(yīng)用你的應(yīng)用程序,它調(diào)用到了mongoose提供的一些接口。 通常上面的介紹,是不是覺(jué)得在應(yīng)用程序嵌入Mongoose很簡(jiǎn)單呢!是的就是這么簡(jiǎn)單。 |
|
來(lái)自: su_day > 《網(wǎng)絡(luò)協(xié)議》