<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 面向物聯(lián)網的嵌入式以太網終端平臺設計與實現(xiàn)

          面向物聯(lián)網的嵌入式以太網終端平臺設計與實現(xiàn)

          作者: 時間:2012-08-22 來源:網絡 收藏

          3 WEB服務器的
          HTTP定義了瀏覽器與服務器交互的不同方法,最基本的方法有4種。本系統(tǒng)的只涉及到GET和POST這兩種最基本的方法。GET一般用于向服務器獲取和查詢資源信息,而POST一般用于向服務器上傳和更新沒有長度限制的、大容量的資源信息。一個基本的WEB服務器要動態(tài)網頁服務的關鍵是要能夠對瀏覽器發(fā)送的GET或POST請求做出響應。一般情況下制作動態(tài)網頁需要使用語言:HTML+ASP或HTML+PHP或HTML+ JSP等。要在資源有限的系統(tǒng)上實現(xiàn)這樣的功能是不現(xiàn)實的,一種明智的辦法是通過使用回調函數的方式,為瀏覽器的每一種請求都一個服務函數與之對應。當有新增加的GET或POST請求時,則只需要增加相應的服務函數即可。具體實現(xiàn)時可一個存放服務函數地址的結構體,其成員包括所請求服務參數的長度、名稱和對應服務函數的地址。然后將所有的結構體都初始化在一個數組中,代碼如下:
          c.JPG
          在編寫應用程序的時候,只需抓取瀏覽器所發(fā)送的請求類型和參數,即可根據不同的請求來調用相應的服務函數。當有新的GET或者POST請求增加時,只需要增加與之對應的服務函數即可,這樣就實現(xiàn)了擴展性很強的動態(tài)網頁服務。WEB服務器響應瀏覽器訪問的流程如圖3所示。

          本文引用地址:http://www.ex-cimer.com/article/148553.htm

          d.JPG


          POST請求分為帶參數和不帶參數兩類,帶參數的POST請求,如:設置IP地址,子網掩碼等操作,需要提取相關參數后再調用服務函數進行處理。不帶參數的POST請求只需直接調用相應服務函數即可,如:重啟系統(tǒng)、恢復默認參數等操作。遠端PC可以通過該動態(tài)WEB服務器來對進行訪問,完成上述幾項操作。在第一次啟動本系統(tǒng)時,系統(tǒng)通過運行DHCP客戶端程序,向DHCP服務器(路由器等設備)主動申請IP地址,獲得IP后,遠端PC即可通過該IP地址對本系統(tǒng)進行訪問和設置。網頁界面如圖4所示。

          e.JPG



          4 結束語
          采用AT91SAM7X512處理器和DM9161物理層芯片。兩者通過MII接口連接,高集成度的處理器提高了系統(tǒng)穩(wěn)定性,降低了數據傳輸出錯機率。通過向移植LwIP協(xié)議,使具備連入的能力,并通過調用函數的方式在該低成本平臺上實現(xiàn)了動態(tài)網頁服務器。在局域網條件下運行該和上位機PC進行連接,能很好的通過網絡傳遞RFID讀卡器采集的信息,并且上位機PC能夠通過網頁對本終端進行訪問和參數設置。針對更復雜的遠程網絡連接和訪問,網絡延遲和丟包等問題還有待進一步的研究。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          p2p機相關文章:p2p原理



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();