<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種實(shí)用的嵌入式Web服務(wù)器設計

一種實(shí)用的嵌入式Web服務(wù)器設計

作者: 時(shí)間:2012-05-08 來(lái)源:網(wǎng)絡(luò ) 收藏

2 功能實(shí)現
2.1 HTTP連接管理的功能實(shí)現
所謂HTTP連接管理,主要是指對連接到端口的socket進(jìn)行監聽(tīng)、捕獲、讀寫(xiě)、關(guān)閉,以及對HTTP請求報文協(xié)議字段的解析和響應報文的生成等操作。其中,BOA可提供完整的HTTP協(xié)議數據解析及響應報文生成的功能。因此,對和HTTP連接管理中相關(guān)的操作,基本上可直接采用BOA的相關(guān)代碼,實(shí)現起來(lái)難度不大。
BOA中的連接狀態(tài)切換示意圖如圖3所示。

本文引用地址:http://dyxdggzs.com/article/149122.htm

c.jpg


當程序每次監聽(tīng)到新的socket連接訪(fǎng)問(wèn)接入時(shí),首先對空閑隊列進(jìn)行判斷,如果為空,則申請一個(gè)request結構空間,并將其插入就緒隊列的隊頭,否則可直接將一個(gè)結構空間從空閑隊列轉入;對當前正在處理的就緒隊列成員,當網(wǎng)絡(luò )阻塞時(shí)則將其移入阻塞隊列的隊頭,當訪(fǎng)問(wèn)結束斷開(kāi)連接時(shí),則將該成員的空間信息移入空閑隊列;而當對阻塞隊列進(jìn)行輪詢(xún)時(shí),根據其成員所對應的socket上是有讀寫(xiě)請求還是該連接已超時(shí),分別將其移入就緒隊列或斷開(kāi)連接移入空閑隊列。
以上過(guò)程在BOA中主要是通過(guò)get_request、fdset_update和process_requests這三個(gè)函數來(lái)實(shí)現的,它們也是實(shí)現移植的重點(diǎn),其他函數則相對簡(jiǎn)單。在移植過(guò)程中,為了適應的應用環(huán)境,在系統初始化時(shí),給空閑隊列分配了足夠大的隊列空間,并對操作時(shí)所涉及的一些動(dòng)態(tài)內存分配的語(yǔ)句和結構進(jìn)行修改,從而盡量減少連接過(guò)程中頻繁的內存申請。另外,傳統的BOA對每個(gè)CGI連接啟動(dòng)新的任務(wù),在此考慮到配置數據的即時(shí)生效以及系統資源的節約,仍然在EWS的任務(wù)環(huán)境中處理該CGI連接。實(shí)驗證明,這種處理方法簡(jiǎn)單可行,而且在裝置的應用環(huán)境中對的性能并無(wú)太大影響。
2.2 訪(fǎng)問(wèn)權限管理的功能實(shí)現
為了應用時(shí)操作的安全性,本文將訪(fǎng)問(wèn)的頁(yè)面分成兩類(lèi):一類(lèi)為配置操作頁(yè)面,儀供認證用戶(hù)訪(fǎng)問(wèn);另一類(lèi)為設備狀態(tài)頁(yè)面,可供任何用戶(hù)訪(fǎng)問(wèn)。其控制主要是通過(guò)對用戶(hù)IP的判別及訪(fǎng)問(wèn)頁(yè)面的分類(lèi)來(lái)實(shí)現的。首先對用戶(hù)訪(fǎng)問(wèn)的URL進(jìn)行解析,如果訪(fǎng)問(wèn)對象為配置操作頁(yè)面,則需要進(jìn)行認證,在此通過(guò)一個(gè)用戶(hù)權限控制管理結構來(lái)對通過(guò)權限認證的用戶(hù)進(jìn)行維護,并提供一個(gè)時(shí)間摔制機制,使通過(guò)認證的用戶(hù)在一定時(shí)間段內可持續有效的對進(jìn)行訪(fǎng)問(wèn)。如果當前客戶(hù)端(訪(fǎng)問(wèn)者IP)在用戶(hù)權限控制結構內,且未超時(shí),則通過(guò)認證,由服務(wù)器根據本次申請的URL返回相應頁(yè)面;若超時(shí)則需要對本次訪(fǎng)問(wèn)的URL進(jìn)行重定向,返回密碼校驗頁(yè)面,給用戶(hù)提供密碼輸入的接口。如果訪(fǎng)問(wèn)頁(yè)面為設備狀態(tài)頁(yè)面,則無(wú)需進(jìn)行認證,直接由URL返回相應頁(yè)面即可。訪(fǎng)問(wèn)權限認證程序流程如圖4所示。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>