青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

利用GoAhead構建嵌入式web應用

關鍵字:GoAhead, 嵌入式web服務器, web應用

摘要:詳細介紹了開源嵌入式web服務器GoAhead的原理,并結合具體實例說明如何利用它構建嵌入式web應用。

Key words: GoAhead, embedded web server, web application

Abstract: This paper introduces the principle of open source embedded web server GoAhead, and explains how to build embedded web application using GoAhead combined with practical examples.

1 簡介

廉價的硬件,功能強大的32操作系統,以及無處不在的因特網,它們一起促成了網絡應用和設備的飛速增長。大量的設備連接到網絡上,于是人們希望通過一種通用、熟悉、快捷的方式來訪問和控制它們。嵌入式web服務器正好迎合了這種需求,它們嵌入在網絡設備之中,使用標準的瀏覽器就可以遠程訪問和控制它們。

然而,并不是所有的web服務器都可以擔當如此重任,我們需要的是一個強大,安全,標準的,而且最好是久經考驗的嵌入式web服務器。這里將要介紹的GoAhead嵌入式web服務器能夠滿足所有這些需求,包括西門子,霍尼韋爾,惠普等大型企業都在使用GoAhead

2 嵌入式web服務器的要求

2.1 易于與設備集成

易于與設備集成包含兩個方面的意思,其一是將Web應用程序集成到實時操作系統,其二是可以在Web應用中輕松訪問硬件功能。由于GoAhead是開放源代碼的,因此這一點不難做到。

2.2 支持將Web頁面存儲在ROM

許多嵌入式系統并沒有文件系統,因此有必要將web頁面保存到ROM中。GoAhead支持對web頁面進行編譯并將它們鏈接到最終的可執行文件中。

2.3 加密和用戶管理

GoAhead服務器支持使用SSL進行數據加密和認證。同時,它也支持摘要認證機制,一種總是加密密碼的更安全的認證機制。用戶管理功能允許不同的用戶具有不同級別的訪問權限。

除了上述要求之外,是否能夠快速、方便的生成動態頁面是衡量一個嵌入式web服務器的重要指標。GoAhead提供了多種方法編寫動態頁面,包括asp過程、GoForms過程和embedded JavaScriptGoAhead主要利用asp過程動態獲取系統信息然后顯示在頁面上,GoForms過程則主要用來處理用戶指令,例如控制設備和修改配置等。下面以一個動態顯示系統當前正在運行的進程信息的小型web應用程序為例,闡述如何利用GoAhead構建嵌入式web應用程序,特別是aspGoForms過程的使用方法。

3 動態頁面支持

在嵌入式設備中,大部分web頁面都是動態生成的。生成動態頁面的方法主要有兩種,通過C代碼生成HTML標簽和在HTML頁面中嵌入表達式標簽。直接通過C代碼生成頁面的優點是靈活,但是卻犧牲了友好性,因為不到開始運行程序的最后一刻,你不可能知道這個頁面看起來會是個什么樣子。相比之下,第二種方法更加直觀,你可以使用你所喜歡的工具以所見即所得的方式編輯頁面,在必要的地方添加占位符,運行時它們會被動態產生的數據代替。GoAhead完全支持這兩種方式。

為了方便的創建具有高度交互性的動態網頁,GoAhead提供了asp過程和GoForms過程兩種武器。它們實際上都與定義在服務器端的某個C函數綁定在一起,只是分工不同,asp過程用來生成顯示在頁面中的動態數據,而GoForms過程則用來處理用戶輸入和修改設置,它們一起構成了GoAhead的核心。

3.1 ASP過程

ASP最初用于IIS中,它是微軟開發的生成動態Web頁面的服務器端技術。現在已經被移植到包括GoAhead的各種平臺中,使用ASP的網頁的后綴一般為“.asp”。為了在Web頁面中嵌入ASP腳本,只需使用特殊的標簽“<%” “%>”將腳本包裹起來。之所以使用ASP標簽目的是為了向用戶顯示動態內容,例如系統進程信息等。因為動態內容實際上是在執行特定的C函數生成的,所以需要將web頁面中的ASP標簽與特定的C函數聯系在一起。一般,整個過程大致可以分成以下三個步驟:

1. 設計web頁面,動態內容使用特定的asp過程名替代,也稱其為一個占位符。

2. 在某個.c文件中定義與asp過程對應的C函數

3. main.c文件中的initWebs函數中使用websAspDefine注冊asp過程

以清單1中的<% UpdateProcInfor(); %>標簽為例,此標簽的目的是為了顯示系統當前正在運行的進程的信息。獲取進程信息實際上是由位于ui.c中的UpdateProcInfo函數完成的,詳見清單2,它負責獲取系統進程信息,并格式化為HTML輸出。清單3中的websAspDefine函數將<% UpdateProcInfor(); %>標簽與UpdateProcInfo函數關聯起來,這樣當GoAhead解析home.asp頁面遇到<% UpdateProcInfor(); %>標簽時,控制權就會跳轉到UpdateProcInfor()函數,在輸出以HTML格式表示的進程信息后,控制權轉交給GoAhead繼續解析home.asp頁面。

注意:asp過程必須符合原型:int AspProcName (int ejid, webs_t wp, int argc, chart_t **argv);
其中,ejid參數作為JavaScript解釋器句柄可以用來調用JavaScript相關函數,例如ejGetVarejSetResultwp參數作為瀏覽器連接的句柄,可以用來調用很多有用的GoAhead服務器函數,例如用來輸出HTML語句的websWrite等。argcargv包含傳遞給asp過程的實參的個數和內容。

//清單1home.asp(省略了其它無關的部分,細節請參考附帶源代碼)

<html>

<head>

<% WriteMetaElement(); %>

</head>

<form action="/goform/UpdateConfig" method="post">

<input type="text" name="interval" value="" size="7" />

<input type="submit" name="ok" value="Update" />

<input type="reset" name="cancel" value="Reset" />

</form>

<% UpdateProcInfo(); %>

</html>

//清單2ui.c

#include "ui.h"

#include "..\webs.h"

//HTML格式輸出系統當前進程信息

int UpdateProcInfo(int ejid, webs_t wp, int argc, char_t *argv)

{

return WriteProcPage(wp);

}

//根據用戶輸入改變刷新間隔時間設置

void UpdateConfig(webs_t wp, char_t *path, char_t *query)

{

int tmpInterval=_ttoi(websGetVar(wp, L"interval", L"-1"));

if(tmpInterval>3)

{

s_interval=tmpInterval;

}

websRedirect(wp, L"home.asp");

}

//清單3main.c文件中的initWebs()函數

#include "ui.h"

//關聯asp標簽和C函數名字

websAspDefine(T("UpdateProcInfo"), UpdateProcInfo);

websAspDefine(T("WriteMetaElement"), WriteMetaElement);

//關聯GoForms標簽和C函數名字

websFormDefine(T("UpdateConfig"), UpdateConfig);

3.2 GoForms過程

GoAhead實現了稱為GoForms的標準的通用網關接口(CGI)處理用戶提交的表單。與傳統的CGI方法不同,GoForms過程不是為每個瀏覽器連接都創建一個新的進程,而是通過與GoAhead服務器共享地址空間,于是可以直接訪問全部的請求上下文。GoForms處理器可以自動解析和訪問所有的POST和查詢數據,它也提供了一組API可以輕松訪問CGI變量。

GoForms過程與ASP過程不同,它主要用來響應用戶輸入以更新系統設置或者執行特定的動作。在GoAhead中,GoForms實現為一個URL處理器,它會解釋以"/goform"開始的URLs。緊跟著"goform"之后的字符串定義了表單名字和用戶請求的細節。例如:“/goform/ UpdateConfig?interval=5”這個請求表示調用GoForms過程" UpdateConfig "GoForms變量interval表示用戶設置的新刷新間隔時間。GoAheadASP過程和GoForms過程的處理十分類似,只是GoForms過程通過websFormDefine函數調用進行關聯,并且必須遵守原型“void GoFormsProcName(webs_t wp, char_t *path, char_t *query);”。完整的GoForms過程示例請參考列表1-3中的用來處理用戶請求的UpdateConfig過程。

3.3 ROM化網頁

對于具有文件系統的嵌入式操作系統來說,可以將web應用中用到的各種資源,例如html文件、圖片、css文件以及exe文件直接以文件的形式保存起來。除此以外還存在大量的不具備文件系統的嵌入式操作系統,此時可以利用GoAheadROM化功能將所有資源集成到可執行文件中。首先在E:\GoAhead目錄下創建一個files.txt文件,將web應用中使用到的所有資源及其路徑都保存在這個文件中,如清單4所示:

//清單4files.txt文件

E:\GoAhead\home.asp

E:\GoAhead\graphics\topbar.gif

E:\GoAhead\style\base.css

然后構建webcomp工程生成webcomp.exe。在命令行中輸入命令“webcomp E:\GoAhead files.txt >webrom.c”,此命令的目的是依次將files.txt中的每個資源文件都轉換為一個unsigned char數組,并將這些數組添加到自動生成的webrom.c源文件中。最后,只需在webs工程中定義宏WEBS_PAGE_ROM以使能ROM化網頁功能,同時使用生成的webrom.c替換webs工程中的原始webrom.c,重新構建webs工程,這樣在生成的webs.exe中就包含了運行web應用所需的全部資源,大大簡化了部署過程。

3.4 測試web應用程序

運行webs.exe啟動GoAhead web服務器,打開瀏覽器在地址欄輸入http://localhost。默認情況下會自動打開home.asp頁面,如圖1所示。

clip_image001

1 GoAhead服務器測試頁面

4 結語

GoAhead已經被成功的移植到HP-UX, Windows CE, pSOS, QNX, IRIX, uCOS, eCOS, chorus RTEMS等眾多操作系統中。本文之所以使用Windows平臺上GoAhead移植為例進行說明,一方面每個讀者都可以運行附帶的源代碼親自進行試驗以加深印象,另一方面也可以省略復雜的平臺介紹,從而重點掌握GoAhead本身的功能與特點。

筆者在利用GoAhead構建遠程監控等嵌入式web應用的過程中,發現有必要對GoAhead特有的一些編程技巧加以說明以少走彎路。GoAhead定義了宏T(x),可以根據是否定義了宏UNICODE使字符串在UnicodeANSI之間自由切換。當使用websWrite函數輸出HTML語句時,請使用<br />而不是\n輸出換行符。GoAhead中的一些選項,例如默認頁、端口號和重試次數等,都可以進行配置以適應自己的應用程序。另外如果希望為用戶提供更加豐富的用戶體驗,可以考慮使用Java Applet技術。

5 參考文獻

1. Anthony J. Massa. Integrating GoAhead WebServer & eCos: Web-based remote management for small systems, http://www.ddj.com/mobile/184405201.

2. GoAhead Overview. http://www.goahead.com/products/webserver/default.aspx

3. Functionality Overview of an Open Source Embedded Web Server. http://data.goahead.com/webserver/WebServer2.1wp5-00.doc

 

posted on 2009-07-13 10:41 肥仔 閱讀(3244) 評論(3)  編輯 收藏 引用 所屬分類: Web-后臺

評論

# re: 利用GoAhead構建嵌入式web應用  回復  更多評論   

好好好好好
2014-07-21 21:41 | 11111111

# re: 利用GoAhead構建嵌入式web應用  回復  更多評論   

收錄卻不附上鏈接地址,有點過了,學這行基本的版權意識都沒有
2015-04-07 20:25 | fsa
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲免费福利视频| 日韩一级在线| 狠狠色噜噜狠狠狠狠色吗综合| 国产精品成人免费精品自在线观看| 欧美精品18+| 欧美日韩二区三区| 欧美日韩一区二区视频在线 | 亚洲一二三区在线观看| 在线视频欧美日韩| 亚洲一区三区电影在线观看| 亚洲一区在线观看免费观看电影高清| 亚洲私拍自拍| 久久国产精品99久久久久久老狼| 久久久久久国产精品mv| 久久综合影视| 最新国产の精品合集bt伙计| 亚洲精品在线免费| 亚洲伊人一本大道中文字幕| 欧美一区国产一区| 国产欧美日韩精品丝袜高跟鞋| 欧美激情一区二区三区全黄| 一本色道久久88精品综合| 一区二区三区日韩欧美精品| 亚洲欧美精品在线| 久久久久久久久久久一区| 免费久久99精品国产自| 亚洲国产视频一区| 亚洲最黄网站| 新片速递亚洲合集欧美合集| 久久香蕉国产线看观看网| 欧美刺激性大交免费视频| 欧美午夜电影在线观看| 国产日韩欧美三区| 亚洲国产精品久久久久秋霞不卡| 亚洲精品一级| 欧美在线观看一区| 亚洲丰满在线| 亚洲欧美日本日韩| 欧美成人高清视频| 国产精品青草综合久久久久99| 狠狠干狠狠久久| 夜夜嗨av一区二区三区网页| 欧美在线观看视频| 亚洲激情欧美激情| 欧美影院成年免费版| 欧美激情第三页| 国产日本精品| 一本色道久久99精品综合| 久久久噜噜噜久久人人看| 亚洲区在线播放| 久久国产色av| 国产精品久久久久久久午夜| 亚洲国产精品va在线观看黑人| 午夜精品福利在线观看| 亚洲国产精品激情在线观看| 午夜精品久久久久久久久久久| 欧美大片免费观看在线观看网站推荐| 国产区精品视频| 一区二区激情视频| 欧美www视频| 亚洲欧美日韩综合| 欧美日韩成人在线| 在线免费观看日本欧美| 欧美一区二区高清| 亚洲三级影院| 欧美刺激午夜性久久久久久久| 国产在线乱码一区二区三区| 亚洲午夜一区| 亚洲黄色尤物视频| 久久夜色精品国产| 好男人免费精品视频| 午夜精品在线| 在线亚洲自拍| 欧美日韩亚洲一区在线观看| 亚洲日本在线观看| 老司机精品视频网站| 亚洲欧美日韩国产综合| 国产精品theporn| 99成人精品| 亚洲国产成人不卡| 免费成人性网站| 1024成人网色www| 女同一区二区| 久久天堂成人| 亚洲福利国产| 你懂的视频一区二区| 久久久精品久久久久| 国产亚洲一级高清| 久久久噜噜噜久久久| 午夜在线视频一区二区区别| 国产精品网曝门| 欧美伊人久久久久久午夜久久久久 | 欧美成人中文字幕| 亚洲高清激情| 欧美激情在线狂野欧美精品| 亚洲图片欧美日产| 久久久久国产精品厨房| 另类专区欧美制服同性| 亚洲高清av| 欧美高清视频| 欧美国产亚洲另类动漫| 99国产精品久久久久久久| 91久久精品国产| 欧美久久电影| 亚洲免费网址| 亚洲欧美乱综合| 国产午夜精品全部视频在线播放 | 午夜一区二区三区在线观看| 亚洲视频观看| 国产精品无人区| 久久另类ts人妖一区二区| 久久久久综合| 亚洲精品中文字幕女同| 日韩天堂在线观看| 国产精品日韩在线观看| 久久久精品国产99久久精品芒果| 久久久久久久性| 亚洲国产中文字幕在线观看| 亚洲人精品午夜| 国产精品久久久久久久久久尿| 欧美亚洲日本网站| 久久精品国产一区二区电影| 亚洲人成绝费网站色www| 欧美成人精品高清在线播放| 欧美一区二区三区在线| 欧美日韩亚洲高清| 亚洲欧美日韩精品| 欧美在线影院在线视频| 亚洲高清精品中出| aⅴ色国产欧美| 国产亚洲毛片在线| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美中文在线观看国产| 久久精品视频亚洲| 日韩一级免费| 香蕉久久夜色精品国产使用方法| 亚洲高清免费| 亚洲美女色禁图| 国产视频一区在线观看| 亚洲国产精品日韩| 国产精品久久久一区麻豆最新章节| 久久久久国产精品www| 欧美福利视频一区| 欧美中文字幕在线播放| 媚黑女一区二区| 亚洲欧美综合网| 久久综合狠狠综合久久激情| 亚洲视频www| 久久久久久电影| 亚洲一区视频在线观看视频| 久久久.com| 亚洲欧美高清| 亚洲欧洲偷拍精品| 激情欧美一区二区| 亚洲精品黄网在线观看| 国产亚洲视频在线观看| 亚洲国产综合91精品麻豆| 国产麻豆午夜三级精品| 亚洲日本欧美天堂| 国内视频精品| 亚洲午夜视频在线观看| 亚洲黄一区二区三区| 亚洲欧美日韩国产中文| aaa亚洲精品一二三区| 久久精品电影| 欧美一区二区三区四区在线观看地址| 欧美不卡三区| 久久综合亚洲社区| 国产精品视频一区二区三区| 亚洲激情亚洲| 在线成人www免费观看视频| 亚洲一区中文| 中文久久精品| 欧美精品亚洲| 欧美激情日韩| 激情成人综合| 欧美一区二区三区婷婷月色 | 在线免费观看日本欧美| 亚洲欧美日韩国产一区| 亚洲图片在线| 欧美—级a级欧美特级ar全黄| 美女诱惑黄网站一区| 国产亚洲成av人片在线观看桃| 一区二区不卡在线视频 午夜欧美不卡' | 国产一区二区在线观看免费播放| 99在线热播精品免费| 日韩亚洲欧美一区| 蜜臀av国产精品久久久久| 老牛影视一区二区三区| 国产午夜精品久久久| 亚洲一区综合| 亚洲欧美激情四射在线日| 欧美日韩色一区| 99精品99| 亚洲香蕉网站| 国产精品v欧美精品∨日韩| 亚洲乱码国产乱码精品精天堂 | 亚洲国产成人tv| 亚洲精品欧美激情| 欧美国产日韩一区二区|