Web服務(wù)在TM1300上的實(shí)現
假定用戶(hù)在HTTP消息中帶有消息體,那么首先要找到一個(gè)空白行(即:Cache-Control:no-cache后面一行),因為它是消息體和HTTP頭信息的分界線(xiàn)。接下來(lái)需要分析消息主體的內容。這方面的工作非常簡(jiǎn)單,就是根據字符‘&’將文本串分為三部分,即:xsize=352,ysize=288,submit=%CC%E1%BD%BB。然后根據字符‘=’進(jìn)一步區分參數的名稱(chēng)和對應的值。通過(guò)分析知道參數xsize的值為352,ysize的值為288。
通過(guò)對HTTP消息的解析,可以確定用戶(hù)需要完成的操作及操作所需要的參數,進(jìn)而可以對底層的硬件或軟件進(jìn)行控制,以完成用戶(hù)的請求。
由此可以看出,服務(wù)器程序的核心工作就是對HTTP數據包解析,決定下一步的處理。針對上面的例子,Web服務(wù)程序首先要對視頻輸入輸出接口進(jìn)行控制,改變輸入輸出圖像的尺寸;接下來(lái)還要輸出HTTP數據包送給IE瀏覽器,圖3給出了Web服務(wù)程序產(chǎn)生的HTTP數據包及用戶(hù)看到的界面。
圖3(a)是服務(wù)器回送給IE瀏覽器的HTTP消息。第一行HTTP/1.1200OK通知IE瀏覽器,剛才的請求已經(jīng)被服務(wù)器處理。下面一行是服務(wù)器的處理時(shí)間。Content-type:text/html這一行通知IE瀏覽器HTTP消息主體部分傳送的內容是純文本格式的HTML網(wǎng)頁(yè)。后面的空行是HTTP頭信息與HTTP消息主體的分界線(xiàn)。當IE瀏覽器獲取HTTP頭信息后,就可以根據消息主體的格式調用對應的HTML解析器對內容進(jìn)行解析,并將解析的結果顯示在瀏覽器的窗口中。
3Web服務(wù)進(jìn)程與其他進(jìn)程間的通信
由于多媒體處理平臺需要同時(shí)進(jìn)行音頻、視頻處理及網(wǎng)絡(luò )通信,即在同一個(gè)時(shí)刻需要有多個(gè)任務(wù)同時(shí)運行,并且這些任務(wù)之間需要進(jìn)行通信,例如:當用戶(hù)改變了系統編碼參數后,Web服務(wù)器需要通知視頻編碼進(jìn)程,讓它們在后續的編碼過(guò)程中采用新的參數。由于TM1300運行pSOS系統,而pSOS只有進(jìn)程,沒(méi)有線(xiàn)程,因此Web服務(wù)程序作為一個(gè)單獨的進(jìn)程來(lái)運行。當需要與其他任務(wù)通信時(shí),采用了信號量方法。圖4以Web服務(wù)進(jìn)程和視頻編碼進(jìn)程之間的通信為例,給出了系統實(shí)現進(jìn)程間通信的過(guò)程。
首先在Flash中開(kāi)辟一塊區域,專(zhuān)門(mén)用來(lái)存儲所需修改的參數。當Web服務(wù)器接收到客戶(hù)端提交的修改參數的請求時(shí),采用以下步驟進(jìn)行處理:(1)Web服務(wù)進(jìn)程將信號量鎖定;(2)Web服務(wù)進(jìn)程將用戶(hù)提交的參數寫(xiě)入到參數區;(3)Web服務(wù)器進(jìn)程釋放信號量;(4)Web服務(wù)進(jìn)程向視頻處理進(jìn)程發(fā)送信號[3],通知視頻編碼進(jìn)程讀取參數;(5)視頻處理進(jìn)程將信號量鎖定;(6)視頻處理進(jìn)程讀取參數;(7)視頻處理信號釋放信號量。經(jīng)過(guò)一系列操作后,Web服務(wù)器進(jìn)程和視頻編碼進(jìn)程間的通信結束,完成了一次參數的修改。Web服務(wù)進(jìn)程與音頻編碼進(jìn)程間的通信與上述過(guò)程類(lèi)似。
本文重點(diǎn)探討了在TM1300上實(shí)現嵌入式Web服務(wù)器的方法與具體實(shí)現中的一些關(guān)鍵問(wèn)題。通過(guò)在現有的多媒體處理平臺中增加Web服務(wù),用戶(hù)可以采用Web頁(yè)面的方式來(lái)監控硬件的運行狀態(tài),并能對系統運行參數進(jìn)行在線(xiàn)修改,降低了系統的使用難度,提高了交互的友好性,進(jìn)而增強了系統的功能和可用性。目前,筆者開(kāi)發(fā)的Web服務(wù)已經(jīng)在TM1300上穩定運行,下一步工作主要是擴充其功能,并提供網(wǎng)管功能。
參考文獻
1RFC822.StandardforARPAInternetTextMessages[s].1982
2RFC2616.HypertextTransferProtocol----HTTP/1.1[s].1999
3W.RichardStevens著(zhù),尤晉元譯.UNIX環(huán)境高級編程.北京:機械工業(yè)出版社,2000
評論