基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法
【技術領域】
[0001]本發(fā)明涉及一種web服務器訪問平臺數(shù)據(jù)的方法,特別是涉及一種基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法。
【背景技術】
[0002]在采用Linux作為操作系統(tǒng)的嵌入式設備中,Linux系統(tǒng)提供各個功能模塊進程之間及線程之間的通信。如何在Linux環(huán)境下實現(xiàn)準確且高效的數(shù)據(jù)獲取成為研發(fā)中的重點所在。
[0003]在嵌入式設備的研發(fā)中,為了快速運行設備和提供高效的功能,通常會將多個平臺的架構放在同一個設備中運行,而且所采用的數(shù)據(jù)則分別存儲在對應的平臺中,各個平臺有自己的數(shù)據(jù)處理機制。因此,在添加web功能時,需要獲取各個平臺的數(shù)據(jù)。由于各個平臺的數(shù)據(jù)處理機制不同,且平臺不能直接訪問平臺數(shù)據(jù),會出現(xiàn)各個平臺處理數(shù)據(jù)負荷不一致的情況,導致影響了整個設備的運行,如圖1所示的情況。
[0004]另外,現(xiàn)有技術中,嵌入式設備只是通過httpd進程通過解析后訪問一個平臺的數(shù)據(jù),并不能訪問多個平臺的數(shù)據(jù)。
【發(fā)明內容】
[0005]鑒于以上所述現(xiàn)有技術的缺點,本發(fā)明的目的在于提供一種基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,在實現(xiàn)更好的移植且不破壞當前各個平臺的架構的基礎上,在Linux系統(tǒng)中通過httpd進程獲取多個不同平臺的數(shù)據(jù),以達到頁面訪問的目的。
[0006]為實現(xiàn)上述目的及其他相關目的,本發(fā)明提供一種基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,包括以下步驟:步驟S1、當訪問嵌入式設備的web頁面時,嵌入式設備調用httpd進程接收數(shù)據(jù)請求,并通過CGI對數(shù)據(jù)請求進行解析和分解,獲取所請求數(shù)據(jù)的控制報文類型以及相應的分解數(shù)據(jù);步驟S2、嵌入式設備根據(jù)所請求數(shù)據(jù)的控制報文類型,確定數(shù)據(jù)所在平臺;判斷數(shù)據(jù)所在平臺是否為當前平臺;若是,轉入步驟S3 ;若否,轉入步驟S4 ;步驟S3、從當前平臺上直接獲取所要求的數(shù)據(jù),并返回給嵌入式設備;步驟S4、訪問數(shù)據(jù)所在平臺對應的客戶端,數(shù)據(jù)所在平臺對應的客戶端再訪問對應的服務端,對應的服務端在數(shù)據(jù)所在平臺上獲取所要求的數(shù)據(jù),并返回至數(shù)據(jù)所在平臺對應的客戶端,數(shù)據(jù)所在平臺對應的客戶端將所要求的數(shù)據(jù)返回給嵌入式設備。
[0007]根據(jù)上述的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,其中:用戶端通過設備的瀏覽器訪問嵌入式設備的web頁面。
[0008]根據(jù)上述的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,其中:獲取所請求數(shù)據(jù)的控制報文類型時,通過頁面的名字進行匹配來確定。
[0009]根據(jù)上述的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,其中:所述步驟SI中,CGI的處理過程包括如下步驟:
[0010]CGI接收httpd進程接收到的數(shù)據(jù)請求;
[0011]判斷數(shù)據(jù)請求的報文頭是否是設置操作;
[0012]若是設置操作,接收httpd設置數(shù)據(jù)請求,根據(jù)數(shù)據(jù)請求的頁面進行解析,并將頁面和數(shù)據(jù)結構表中的已知數(shù)據(jù)頁面進行匹配;若存在匹配的頁面,則將需要設置的功能數(shù)據(jù)存儲于臨時緩存中,通過頁面索引將頁面中所有需要保存的功能數(shù)據(jù)發(fā)送給相應的平臺,平臺接收數(shù)據(jù)進行處理,并將處理結果回傳;若不存在匹配的頁面,則丟棄該數(shù)據(jù)請求,CGI將結果發(fā)送給httpd,再由httpd發(fā)送給請求數(shù)據(jù)的http客戶端;
[0013]若不是設置操作,接收httpd獲取數(shù)據(jù)請求,接收頁面數(shù)據(jù),根據(jù)數(shù)據(jù)請求的頁面進行解析,并將頁面和數(shù)據(jù)結構表中的已知數(shù)據(jù)頁面進行匹配;若存在匹配的頁面,則通過頁面索引從所在的平臺中獲取頁面需要的所有數(shù)據(jù),將獲取的數(shù)據(jù)存儲于臨時緩存中,解析頁面中需要的功能參數(shù),通過功能參數(shù)表,從臨時緩存中獲取數(shù)據(jù),并回傳給httpd,httpd再發(fā)送給請求數(shù)據(jù)的http客戶端;若不存在匹配的頁面,則丟棄該數(shù)據(jù)請求,CGI將結果發(fā)送給httpd,再由httpd發(fā)送給請求數(shù)據(jù)的http客戶端。
[0014]根據(jù)上述的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,其中:所述步驟S4中,數(shù)據(jù)所在平臺對應的客戶端將所要求的數(shù)據(jù)返回給嵌入式設備時,所要求的數(shù)據(jù)返回給嵌入式設備的httpd進程,httpd進程再將所要求的數(shù)據(jù)返回給瀏覽器,以便用戶看到嵌入式設備的頁面信息。
[0015]根據(jù)上述的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,其中:所述步驟S4中,客戶端和服務端間的通信機制是采用Linux的ipc通信機制來完成。
[0016]根據(jù)上述的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,其中:所述步驟S4中,客戶端到服務端的過程是線程到進程、進程到進程、線程到線程或進程到線程。
[0017]如上所述,本發(fā)明的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法,具有以下有益效果:
[0018](I)實現(xiàn)了更好的移植且不破壞當前各個平臺的架構;
[0019](2)實現(xiàn)了 web服務器對多個不同平臺的數(shù)據(jù)信息的訪問;
[0020](3)便于移植,易于維護。
【附圖說明】
[0021]圖1顯示為現(xiàn)有技術中多個平臺各自進行數(shù)據(jù)處理的示意圖;
[0022]圖2顯示為本發(fā)明的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法的框架流程圖;
[0023]圖3顯示為本發(fā)明中CGI的處理流程圖;
[0024]圖4顯示為本發(fā)明的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法的詳細流程圖;
[0025]圖5顯示為本發(fā)明中客戶端和服務端間的通信機制的示意圖。
【具體實施方式】
[0026]以下通過特定的具體實例說明本發(fā)明的實施方式,本領域技術人員可由本說明書所揭露的內容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的【具體實施方式】加以實施或應用,本說明書中的各項細節(jié)也可以基于不同觀點與應用,在沒有背離本發(fā)明的精神下進行各種修飾或改變。
[0027]需要說明的是,本實施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構想,遂圖式中僅顯示與本發(fā)明中有關的組件而非按照實際實施時的組件數(shù)目、形狀及尺寸繪制,其實際實施時各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復雜。
[0028]本發(fā)明中,web服務器需要跨平臺實現(xiàn)對數(shù)據(jù)的訪問,其中跨平臺是指運行在多種不同架構上的進程或者線程。
[0029]參照圖2,本發(fā)明的基于Linux的嵌入式web服務器訪問多平臺數(shù)據(jù)的實現(xiàn)方法包括以下步驟:
[0030]步驟S1、當用戶端訪問嵌入式設備的web頁面時,嵌入式設備調用httpd進程接收數(shù)據(jù)請求,并通過通用網(wǎng)關接口(Common Gateway Interface,CGI)對數(shù)據(jù)請求進行解析和分解,獲取所請求數(shù)據(jù)的控制報文類型以及相應的分解數(shù)據(jù)。
[0031]具體地,用戶端通過設備如PC的瀏覽器訪問嵌入式設備的web頁面。嵌入式設備中當前平臺的httpd進程接收該http數(shù)據(jù)請求,并通過CGI進行解析和分解,以獲取所請求數(shù)據(jù)的控制報文類型。其中,獲取所請求數(shù)據(jù)的控制報文類型時,通過頁面的名字進行匹配來確定。
[0032]參照圖3,CGI的處理過程包括如下步驟:
[0033]CGI接收httpd進程接收到的數(shù)據(jù)請求。
[0034]判斷數(shù)據(jù)請求的報文頭是否是設置(set)操作。
[0035]若是set操作,接收httpd設置數(shù)據(jù)