免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

Web服務(wù)器 Mongoose 的介紹與安裝

 su_day 2013-11-14

Web服務(wù)器 Mongoose 的介紹與安裝

本文主要內(nèi)容如下:

  • 1、Mongoose介紹
  • 2、Mongoose的編譯和使用
  • 3、Makefile的簡(jiǎn)單分析
  • 4、如何將Mongoose嵌入到應(yīng)用程序中

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)源和自由使用。它還具有如下特性:

  • 跨平臺(tái)——Windows、MacOS 、 大多數(shù)UNIX
  • CGI, SSL, SSI, Digest (MD5) authorization, resumed download, aliases
  • IP-based ACL, Windows service, GET, POST, HEAD, PUT, DELETE methods
  • Small footprint: executable size is 40 kB on Linux 2.6 i386 system, 60 kB on Windows system
  • 能夠用簡(jiǎn)單和干凈的API嵌入到應(yīng)用程序中
  • Language suport for:
    • C/C++ (native)
    • Python - since version 2.6 (done)
    • C# - since version 2.7 (done)
    • Ruby - since version 2.9 (todo)
    • Lua - since version 2.9 (todo)

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 )。將其解壓可以看到如下的文件列表:

Web服務(wù)器 Mongoose

圖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,如下圖所示:

Web服務(wù)器 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)),如下圖所示:

Web服務(wù)器 Mongoose

圖3、訪問(wèn)mongoose開(kāi)啟的web服務(wù)

我們查看mongoose打出來(lái)的log,如下圖:

Web服務(wù)器 Mongoose

圖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:
$(CC) $(LINFLAGS) mongoose.c -shared -fPIC -fpic -s -o $(LIB)
$(CC) $(LINFLAGS) mongoose.c main.c -s -o $(PROG)
我們知道,在linux下面編譯用到了哪些源文件:編譯庫(kù)文件_mongoose.so時(shí)僅用到了mongoose.c文件,編譯可執(zhí)行文件時(shí)除了mongoose.c文件還用到了main.c。注意上面的變量$(LINFLAGS),即編譯時(shí)的選項(xiàng)為:
Web服務(wù)器 Mongoose

其中$(COPT)選項(xiàng)是我們make的時(shí)候跟的一些選項(xiàng),下面列出這些選項(xiàng)及其意義:

all:
        @echo "make (linux|bsd|solaris|mac|windows|mingw)"

# Possible COPT values: (in brackets are rough numbers for 'gcc -O2' on i386)
# -DHAVE_MD5            - use system md5 library (-2kb)
# -DNDEBUG              - strip off all debug code (-5kb)
# -DDEBUG               - build debug version (very noisy) (+7kb)
# -DNO_CGI              - disable CGI support (-5kb)
# -DNO_SSL              - disable SSL functionality (-2kb)
# -DCONFIG_FILE=\"file\" - use `file' as the default config file
# -DNO_SSI              - disable SSI support (-4kb)
# -DHAVE_STRTOUI64      - use system strtoui64() function for strtoull()

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)用程序中。

  • 首先,拷貝mongoose.h/c到你的源碼目錄下
  • 然后,在你的應(yīng)用程序中啟動(dòng)和配置mongoose。其實(shí)自帶的main.c就是一個(gè)很好的例子,當(dāng)我們編mongoose的可執(zhí)行文件時(shí)就用到了它。你完全可以把main.c當(dāng)做你的應(yīng)用程序,完全一樣,當(dāng)然業(yè)務(wù)邏輯不同。(后面假設(shè)你的應(yīng)用程序名為main.c,當(dāng)然怎么命名隨你喜歡?。?
  • 最后,跟上面我們分析的Makefile中介紹到的如何在linux下編譯Mongoose一樣,你也是用下面的命令編譯:
    cc main.c mongoose.c –ldl -lpthread –o test
    關(guān)于編譯選項(xiàng)-pthread:Mongoose中在程序中用到了pthread.h頭文件中的函數(shù)時(shí)需要加這個(gè)選項(xiàng)。在編譯的時(shí)候加上此選項(xiàng)會(huì)去鏈接libpthread.a或libpthread.so文件。

關(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)單。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多