freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm9的嵌入式linux系統(tǒng)的webserver服務(wù)器計(jì)算機(jī)設(shè)計(jì)與科學(xué)專業(yè)畢業(yè)論文-資料下載頁

2025-11-08 22:08本頁面

【導(dǎo)讀】后PC時代的一個顯著特點(diǎn)是設(shè)備的聯(lián)網(wǎng),出現(xiàn)了像現(xiàn)場總線和工業(yè)以太網(wǎng)等工業(yè)現(xiàn)場設(shè)備的聯(lián)網(wǎng)技術(shù)。由于這些現(xiàn)場總線和工業(yè)以太網(wǎng)專用性很強(qiáng),實(shí)施成本高,開放性不夠好,同時售后維護(hù)費(fèi)用還很高,維護(hù)不方便,軟件升級麻煩,所以當(dāng)前人們紛紛研究嵌入式設(shè)備直接聯(lián)入互聯(lián)網(wǎng)技術(shù)。隨著嵌入式技術(shù)在性能和功能方面的迅速提升,Web技術(shù)已經(jīng)成為嵌入式應(yīng)用領(lǐng)域的一項(xiàng)關(guān)鍵技術(shù),因此研究Web技術(shù)在嵌入式應(yīng)用中的實(shí)現(xiàn)技術(shù)具有非常重要的應(yīng)用價值。設(shè)計(jì)出一種基于ARM—Linux操作系統(tǒng)的嵌入式WebServer服務(wù)器。針對嵌入式設(shè)備的特點(diǎn),對Linux內(nèi)核進(jìn)行裁剪以及對TCP/IP協(xié)議族進(jìn)行了裁剪,并進(jìn)行Web服務(wù)的移植、編寫CGI程序最終完成B/S模式下Web服務(wù)器的設(shè)計(jì)。因而,將Web技術(shù)應(yīng)用到嵌入式系統(tǒng)中,對嵌入式系統(tǒng)產(chǎn)品的開發(fā)具有重大意義。

  

【正文】 entRoot /usr/ ! CGIPath /bin:/usr/bin:/usr/local/bin Alias /doc /usr/doc! ScriptAlias /cgibin/ /usr//cgibin/⑶ Boa的測試將宿主機(jī)與目標(biāo)機(jī)連接起來,加載內(nèi)核映像文件與文件系統(tǒng)映像文件后,在目標(biāo)機(jī)的文件系統(tǒng)中創(chuàng)建如下目錄: 創(chuàng)建日志文件所在目錄/usr/log/boa,創(chuàng)建HTML文檔的主目錄/usr/,將靜態(tài)網(wǎng)頁存入該目錄下(可以將主機(jī) /usr/share/doc/HTML/),創(chuàng)建CGI腳本所在錄 /usr//cgibin,將cgi的腳本存放在該目錄下。,通??梢詮膌inux主機(jī)的 /etc目錄下直接復(fù)制即可。mkdir /etc/boamkdir /usr/logmkdir /usr/log/boamkdir /usr/mkdir /usr//cgibin將所需的文件夾或者文件mount到目標(biāo)機(jī)上mount :tftpboot/ /mnt/nfscd /mnt/nfscp /etc/boa/cp /usr//cp r img /usr//cp /etc/./boa 直接在瀏覽器中輸入,出現(xiàn)Red Hat的歡迎網(wǎng)頁。靜態(tài)HTML調(diào)試成功。 編寫CGI應(yīng)用程序CGI是通用網(wǎng)關(guān)接口(Common Gateway Interface)的縮寫。它是Web服務(wù)器主機(jī)與外部擴(kuò)展應(yīng)用程序交互的一種標(biāo)準(zhǔn)接口。它提供了將參數(shù)傳遞給程序并將結(jié)果返回給瀏覽器的一種機(jī)制。Web服務(wù)器可以通過CGI讀取客戶端所需要的動態(tài)信息(如動態(tài)網(wǎng)頁)。通過CGI可以提供靜態(tài)HTML網(wǎng)頁無法實(shí)現(xiàn)的一些功能,比如基于Web的搜索引擎、基于Web的數(shù)據(jù)庫訪問等等。一般來說,一個CGI接口的功能就是在超文本文件和服務(wù)器主機(jī)應(yīng)用程序間傳遞信息。任何一種程序語言,只要能在服務(wù)器主機(jī)上利用CGI接口來編寫應(yīng)用程序,都可以叫做CGI程序語言。CGI通過MIME類型來定義Web服務(wù)器傳送的信息類型。C語言高效、便于修改和移植,有利于產(chǎn)品的升級和繼承,所以我們采用C語言來進(jìn)行CGI的開發(fā)。根據(jù)CGI接口規(guī)范,應(yīng)用程序與Web服務(wù)器之間的通訊方法有四種:環(huán)境變量、命令行、標(biāo)準(zhǔn)輸入與標(biāo)準(zhǔn)輸出。環(huán)境變量是由Web服務(wù)器執(zhí)行CGI應(yīng)用程序時設(shè)置的與系統(tǒng)相關(guān)的變量。在各種通訊方法中,使用最廣泛的是環(huán)境變量,Web服務(wù)器通常要實(shí)現(xiàn)標(biāo)準(zhǔn)的CGI環(huán)境變量??蛻舳伺c服務(wù)器通過CGI標(biāo)準(zhǔn)接口通信的流程如圖318所示。CGI程序由客戶端軟件發(fā)送的基于HTTP協(xié)議的請求和命令觸發(fā),將客戶端的請求和命令傳給服務(wù)器端相應(yīng)的應(yīng)用程序;在服務(wù)器端相關(guān)的程序完成相應(yīng)操作后,CGI程序通過標(biāo)準(zhǔn)的輸出流以打印輸出的形式將結(jié)果返回給客戶端。當(dāng)HTTP WEB Server收到CGI程序字段“Contenttype:text/html加一空白行”或“Contenttype:text/plain加一空白行”時,分別表示CGI程序后面輸出的是要傳給客戶端瀏覽器的HTML文檔或純文本文檔。圖318 客戶端與服務(wù)器通過CGI標(biāo)準(zhǔn)接口通信示意圖基于這種交互模式, CGI程序主要分為以下幾部分:⑴ 提交的數(shù)據(jù)。有兩種方法:GET方法和POST方法。若以GET方法提交數(shù)據(jù),則客戶端提交的數(shù)據(jù)被保存在QUERY—STRING環(huán)境變量中,通過調(diào)用函數(shù)getenv(”QUERY—STRING”)來讀取數(shù)據(jù);若以POST方法提交數(shù)據(jù),則程序先從CONTENT—LENGTH環(huán)境變量得到數(shù)據(jù)的字長,然后從標(biāo)準(zhǔn)輸入中讀取相應(yīng)長度的字符串即可得到客戶端提交的數(shù)據(jù)。⑵ URL編碼的解碼。這個過程較為復(fù)雜,在URL編碼的規(guī)則下:變量之間用“amp?!狈珠_;變量name與其value之間用“=”連接;空格符用“+”代替;特殊意義的字符用“ ”接相應(yīng)的十六進(jìn)制ASCII碼代替。解碼即編碼的逆過程。在程序中,只要對于由⑴所述方法提取的數(shù)據(jù)進(jìn)行URL編碼逆操作,就可以得到客戶端傳過來的數(shù)據(jù)。最后將解析出來的name/value保存在一個自定義的結(jié)構(gòu)體中,此結(jié)構(gòu)體定義如下:typede~struct namevaluest{char name[FIELD_LEN+1]。char value[FIELDlLEN+1]。}namevalue。name~value hamvalpairs[NVPAIRS]。將十六進(jìn)制ASCII碼值表示的特殊字符轉(zhuǎn)換成相應(yīng)的ASCII字符的函數(shù)是參照NCSA Server實(shí)現(xiàn)的。⑶ 據(jù)上一部分解析出來的變量/值對,判斷客戶端請求的含義,利用Linux下進(jìn)程間通信機(jī)制傳送消息給相應(yīng)的應(yīng)用程序主進(jìn)程,以完成客戶端請求要完成的任務(wù)(如系統(tǒng)某些參數(shù)設(shè)定、遠(yuǎn)端設(shè)備的運(yùn)行狀態(tài)量等)。應(yīng)用程序?qū)?zhí)行結(jié)果返回給CGI進(jìn)程,由CGI進(jìn)程先輸出“Content~type:text/html加空格行”到HTTP Web Server;然后用printf()函數(shù)產(chǎn)生HTML源代碼傳給HTTP Web Server,HTTP Web Server再按各層協(xié)議將數(shù)據(jù)打包把執(zhí)行結(jié)果返回給客戶端[5]。⑷ CGI腳本測試include int main(void){ printf(Contenttype: text/html )。 printf(html )。 printf(headtitleCGI Output/title/head )。 printf(body )。 printf(h1Hello,world./h1 )。 printf(body )。 printf(/html )。 exit(0)。}/usr/local/arm/注意:程序執(zhí)行時在嵌入式中找不到動態(tài)庫文件,所以在編譯程序時加上static,編譯成靜態(tài)的形式。在瀏覽器輸入。 CGI例子⑴ include include include char* getcgidata(FILE* fp, char* requestmethod)。int main(){ char *input。 char *req_method。 char name[64]。 char pass[64]。 int i = 0。 int j = 0。 printf(Contenttype: text/html\n\n)。 printf(The following is query reuslt:brbr) req_method = getenv(REQUEST_METHOD)。 input = getcgidata(stdin, req_method)。/*我們獲取的input字符串可能像如下的形式:Username=adminamp。Password=aaaaa,其中Username=和amp。Password=是固定的,admin和aaaaa都是變化的,也是我們要獲取的前面9個字符是UserName=,在UserName=和amp。之間的是我們要取出來的用戶名*/ for ( i = 9。 i (int)strlen(input)。 i++ ) { if ( input[i] == 39。amp。39。 ) { name[j] = 39。\039。 break。 } name[j++] = input[i]。 }/*前面9個字符 + amp。Password=10個字符 + Username的字符數(shù)是我們不要的,故省略掉,不拷貝*/ for ( i = 19 + strlen(name), j = 0。 i (int)strlen(input)。 i++ ) { pass[j++] = input[i]。 } pass[j] = 39。\039。 printf(Your Username is %sbrYour Password is %sbr \n, name, pass)。 return 0。}char* getcgidata(FILE* fp, char* requestmethod)。{ char* input。 int len, i=0, size = 1024。 if (!strcmp(requestmethod, GET)) { input = getenv(QUERY_STRING)。 return input。 } else if (!strcmp(requestmethod, POST)) { len = atoi(getenv(CONTENT_LENGTH))。 input = (char*)malloc(sizeof(char)*(size + 1))。 if (len == 0) { input[0] = 39。\039。 return input。 } while(1) { input[i] = (char)fgetc(fp)。 if (i == size) { input[i+1] = 39。\039。 return input。 } len。 if (feof(fp) || (!(len))) { i++。 input[i] = 39。\039。 return input。 } i++。 } } return NULL。}編譯程序: gcc static o ⑵ htmlheadtitle用戶登陸驗(yàn)證/title/headbodyform name=form1 action=/cgibin/ method=POSTtable align=center trtd align=center colspan=2/td/tr tr td align=rightuser:/td tdinput type=text name=Username/td /tr tr td align=rightpassword:/td tdinput type=password name=Password/td /tr tr tdinput type=submit value=submit/td tdinput type=reset value=reset/td /tr/table/form/body/html。在瀏覽器中輸入,輸入用戶名與密碼回車便能得到用戶輸入的用戶名和密碼。4 總結(jié)與展望本文首先介紹了嵌入式系統(tǒng)的基本概念、嵌入式Web的發(fā)展現(xiàn)狀和趨勢。接著在第二章詳細(xì)介紹了Web的支撐技術(shù),針對嵌入式Web服務(wù)器實(shí)現(xiàn)的關(guān)鍵問題給出了相應(yīng)的解決方法以及提高系統(tǒng)性能的主要措施,并詳細(xì)闡述了如何在嵌入式Web中使用CGI實(shí)現(xiàn)服務(wù)器和用戶的動態(tài)交互。接著在第三章詳細(xì)分析了實(shí)現(xiàn)Web服務(wù)器的具體方法,這種方法為進(jìn)一步深入開發(fā)各種嵌入式系統(tǒng)應(yīng)用提供了一個良好的基礎(chǔ),有很強(qiáng)的借鑒意義。在實(shí)現(xiàn)嵌入式Web服務(wù)器實(shí)現(xiàn)過程中,詳細(xì)闡述了Linux內(nèi)核裁剪、TCP/IP裁剪及RTL8019AS網(wǎng)卡驅(qū)動程序的實(shí)現(xiàn),并且給出了Boa服務(wù)移植、Linux根文件系統(tǒng)的建立、CGI程序設(shè)計(jì)的詳細(xì)步驟。其中有很多需要注意的細(xì)節(jié):首先在Linux內(nèi)核裁剪的時候,必須完全按照自己要實(shí)現(xiàn)的設(shè)計(jì)系統(tǒng)的需求對各個模塊進(jìn)行選擇,因?yàn)榍度胧椒浅Vv求
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1