亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種Socket處理方法、裝置和Web服務器的制作方法

文檔序號:7864148閱讀:159來源:國知局
專利名稱:一種Socket處理方法、裝置和Web服務器的制作方法
技術領域
本發(fā)明涉及通信領域,尤其涉及一種Socket處理方法、裝置和Web服務器。
背景技術
基于瀏覽器的用戶界面(webn)已經越來越廣泛的替代了 PC側Π軟件應用于UFi類設備和數據卡類設備中,電腦、手機等客戶端自帶的瀏覽器通過訪問webUI可以方便快捷的對uFi或數據卡的基本配置進行查詢和修改。webn的應用必須基于Web服務器,Web服務器的主要功能是提供網上信息瀏覽服務,在建立Web服務器和電腦、手機等客戶端網絡連接時使用的通信技術稱為Socket。然而,嵌入式Rex系統(tǒng)的Socket通信機制不同于嵌入式Linux系統(tǒng)的Socket機制,它是一種該平臺上特有的異步、非阻塞方式的Socket,因此不同于同步、阻塞方式的Socket,它本身沒有超時機制,因為在正常情形下它根本不需要超時機制。在實踐過程中我們發(fā)現,幾乎所有的電腦和智能手機都可以通過自身的瀏覽器很順暢的訪問Web服務器,但是蘋果公司的某系列的MAC本在訪問Web服務器時會出現一定問題當MAC本的瀏覽器順利打開Webn進行一段時間的瀏覽或者操作之后,會出現無法繼續(xù)瀏覽或操作的問題。經過分析,問題的表象原因在于Web任務等不到Socket底層發(fā)送的信號量而一直處于等待狀態(tài),無法繼續(xù)處理連接、讀、寫、關閉等流程,此時Web服務器無法繼續(xù)被客戶端訪問。進一步分析發(fā)現,Web任務等不到Socket底層發(fā)送的信號量是由于Socket底層沒有監(jiān)聽到客戶端的任何Socket事件。通過抓取80監(jiān)聽端口的TCP包分析發(fā)現,由于MAC客戶端的某種原因,它不再向監(jiān)聽端口發(fā)送任何Socket請求。

發(fā)明內容
本發(fā)明實施例的目的是提供一種Socket處理方法、裝置和Web服務器,在客戶端發(fā)生異常時,Web服務器仍然能夠被訪問。為實現上述目的,本發(fā)明實施例提供了一種Socket處理方法,用于一 Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,所述Socket處理方法包括監(jiān)聽所述Web服務器端口的客戶端請求;根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件;判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果;在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時;在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。上述的Socket處理方法,其中,所述Socket處理方法還包括
在所述等待計時達到預設閾值,,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理后,關閉所述Socket事件。上述的Socket處理方法,其中,所述提供異步、非阻塞方式Socket的平臺為嵌入式Rex系統(tǒng)。上述的Socket處理方法,其中,所述Web服務器端口為80端口。為實現上述目的,本發(fā)明實施例還提供了一種Socket處理裝置,用于一 Web服務器,所述Web服務器基于嵌入式Rex系統(tǒng),所述Socket處理裝置包括監(jiān)聽模塊,用于監(jiān)聽所述Web服務器端口的客戶端請求;注冊模塊,用于根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件;判斷模塊,用于判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果;計時模塊,用于在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時;信號量發(fā)送模塊,用于在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。上述的Socket處理裝置,其中,還包括Socket關閉模塊,用于在所述等待計時達到預設閾值,,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理后,關閉所述Socket事件。上述的Socket處理裝置,其中,所述提供異步、非阻塞方式Socket的平臺為嵌入式Rex系統(tǒng)。上述的Socket處理裝置,其中,所述Web服務器端口為80端口。為實現上述目的,本發(fā)明實施例還提供了一種Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,包括上述任意一項所述的Socket處理裝置。本發(fā)明實施例中,在客戶端發(fā)生異常,Web任務由于接收不到信號量而一直掛起時,開啟計時,計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量激活所述Web任務,使得所述Web任務根據所述Socket事件進行對應流程·的處理,并關閉異常Socket事件,使得客戶端可以重新發(fā)起跟Web服務器端的連接,實現持續(xù)訪問Web服務器的操作,即Web服務器仍然能夠被訪問。


圖I為現有技術中Socket實現流程圖;圖2為本發(fā)明實施例中Socket處理方法的流程示意圖;圖3為基于本發(fā)明實施例的Socket實現流程圖;圖4為本發(fā)明實施例中Socket處理裝置的結構示意圖。
具體實施例方式為使本發(fā)明實施例要解決的技術問題、技術方案和優(yōu)點更加清楚,下面首先介紹現有技術中Socket實現的過程,如圖I所示。監(jiān)聽客戶端請求;根據監(jiān)聽到的客戶端請求進行異步選擇 操作注冊感興趣的Socket事件;Web任務會處于等待信號量的狀態(tài)中,即任務等待信號量時相當于任務被暫時掛起不進行任何活動;等到信號量后,激活Web任務,Web任務根據當前的Socket事件分別處理accept、read、write 或 close 流程。通過上述過程可以看出,異步選擇操作注冊了感興趣的Socket事件之后,Web任務會處于等待信號量的狀態(tài)中,直到等到需要的信號量之后,Web任務才能再次激活,繼續(xù)處理連接、讀、寫、關閉等流程?;赗ex系統(tǒng)的Socket通信機制采用的是異步、非阻塞方式的Socket,因此,信號量機制沒有等待超時的機制,任務等不到想要的信號量就會一直等待下去,無法被激活。為解決上述問題,本發(fā)明是實例提供一種Socket處理方法,用于一 Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,如圖2所示,所述Socket處理方法包括步驟21,監(jiān)聽所述Web服務器端口的客戶端請求;步驟22,根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件;步驟23,判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果;步驟24,在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時;步驟25,在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。監(jiān)聽Web服務器端口的客戶端請求;根據監(jiān)聽到的客戶端請求,通過異步操作注冊感興趣的Socket事件;判斷當前的Socket事件是否為READ事件和/或WRITE事件,獲得判斷結果;在當前Socket事件為READ事件和/或WRITE事件時,開啟計時;計時到達一預設的閾值,此時Web任務仍然未收到所述第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。上述方法通過設計一定時器,當Web任務在預設閾值時間內都沒有等到Socket底層發(fā)送的信號量時,通過定時器給Web任務發(fā)送一個信號量激活Web任務,因此,在客戶端出現異常時,Web服務器仍然能夠被訪問。由于客戶端已經出現異常,Web任務被激活之后需要立刻關閉當前的Socket,使得客戶端可以重新發(fā)起跟Web服務器端的連接,實現持續(xù)訪問Web服務器的操作,因此,上述Socket處理方法還包括步驟26,在所述等待計時達到預設閾值,,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理后,關閉所述Socket事件。上述Socket處理方法,其中,所述提供異步、非阻塞方式Socket的平臺為嵌入式Rex系統(tǒng)。上述Socket處理方法,其中,所述Web服務器端口為80端口。本發(fā)明實施例提供的Socket實現流程分為注冊Socket 感興趣的事件(包括 ACCEPT、WRITE、READ、CLOSE 事件);判斷當前Socket感興趣事件;當前Socket感興趣事件為ACCEPT或CLOSE事件時等待信號量;
當前Socket感興趣事件為READ和/或WRITE事件時,設置Socket Timer定時器然后等待信號量;定時器超時則由Socket Timer給Web任務發(fā)送信號量激活Web任務;異常Socket 關閉。具體流程如圖3所示步驟一,不斷監(jiān)聽80端口的客戶端請求;步驟二,通過異步選擇注冊感興趣的Socket事件,Socket事件包括ACCEPT、WRITE、READ、CLOSE 事件;步驟三,判斷當前感興趣的Socket事件是什么事件,如果為ACCEPT或CLOSE事件則執(zhí)行步驟四。否則執(zhí)行步驟五;步驟四,等待Socket底層發(fā)信號量,Web任務掛起,執(zhí)行步驟六;步驟五,Socket感興趣的事件為READ和/或WRITE事件,設置SocketTimer定時器,等待Socket底層信號量或定時器超時發(fā)送的信號量,Web任務掛起,執(zhí)行步驟七或者步驟八;步驟六,Socket底層監(jiān)聽到客戶端的事件后,調用Socket的回調函數,回調函數匹配了當前的Socket事件之后,發(fā)送信號量激活Web任務,然后根據當前的Socket事件處理accept或close流程;步驟七,設置等待時間的閾值為2s,定時器沒有到2s超時,Socket底層監(jiān)聽到客戶端的事件后,調用Socket的回調函數,回調函數匹配了當前的Socket事件之后,發(fā)送信號量激活Web任務,然后根據當前的Socket事件處理read和/或write流程;步驟八,定時器2s超時,由Socket Timer定時器回調函數給Web任務發(fā)送一個信號量激活Web任務。然后發(fā)起Socket close流程,關閉當前這個異常的Socket。本發(fā)明實施例還提供了一種Socket處理裝置,用于一 Web服務器,所述Web服務器基于嵌入式Rex系統(tǒng),如圖4所示,所述Socket處理裝置包括監(jiān)聽模塊,用于監(jiān)聽所述Web服務器端口的客戶端請求;注冊模塊,用于根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件;判斷模塊,用于判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果;計時模塊,用于在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時;
信號量發(fā)送模塊,用于在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。上述的Socket處理裝置,其中,還包括Socket關閉模塊,用于在所述等待計時達到預設閾值,,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理后,關閉所述Socket事件。上述的Socket處理裝置,其中,所述提供異步、非阻塞方式Socket的平臺為嵌入式Rex系統(tǒng)。上述的Socket處理裝置,其中,所述Web服務器端口為80端口。
本發(fā)明實施例還提供了一種Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,包括上述任意一項所述的Socket處理裝置。以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種Socket處理方法,用于一 Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,其特征在于,所述Socket處理方法包括 監(jiān)聽所述Web服務器端口的客戶端請求; 根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件; 判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果; 在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時;在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。
2.如權利要求I所述的Socket處理方法,其特征在于,還包括 在所述等待計時達到預設閾值,,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理后,關閉所述Socket事件。
3.如權利要求I所述的Socket處理方法,其特征在于,所述提供異步、非阻塞方式Socket的平臺為嵌入式Rex系統(tǒng)。
4.如權利要求I所述的Socket處理方法,其特征在于,所述Web服務器端口為80端□。
5.—種Socket處理裝置,用于一 Web服務器,所述Web服務器基于嵌入式Rex系統(tǒng),其特征在于,所述Socket處理裝置包括 監(jiān)聽模塊,用于監(jiān)聽所述Web服務器端口的客戶端請求; 注冊模塊,用于根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件;判斷模塊,用于判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果; 計時模塊,用于在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時; 信號量發(fā)送模塊,用于在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。
6.如權利要求5所述的Socket處理裝置,其特征在于,還包括 Socket關閉模塊,用于在所述等待計時達到預設閾值,,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理后,關閉所述Socket事件。
7.如權利要求5所述的Socket處理裝置,其特征在于,所述提供異步、非阻塞方式Socket的平臺為嵌入式Rex系統(tǒng)。
8.如權利要求5所述的Socket處理裝置,其特征在于,所述Web服務器端口為80端□。
9.一種Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,其特征在于包括權利要求5至8中任意一項所述的Socket處理裝置。
全文摘要
本發(fā)明實施例提供了一種Socket處理方法、裝置和Web服務器,所述Socket處理方法,用于一Web服務器,所述Web服務器基于提供異步、非阻塞方式Socket的平臺,所述方法包括監(jiān)聽所述Web服務器端口的客戶端請求;根據監(jiān)聽到的所述客戶端請求,通過異步選擇操作注冊Socket事件;判斷所述Socket事件是否為READ事件和/或WRITE事件,獲得一判斷結果;在所述判斷結果指示所述Socket事件為READ事件和/或WRITE事件時,開啟計時;在所述計時達到預設閾值,所述Web任務未收到Socket底層發(fā)送的第一信號量時,發(fā)送第二信號量給所述Web任務,使得所述Web任務能夠被激活,并根據所述Socket事件進行對應流程的處理。本發(fā)明可以在客戶端發(fā)生異常時,Web服務器仍然能夠被訪問。
文檔編號H04L12/26GK102938783SQ20121042399
公開日2013年2月20日 申請日期2012年10月30日 優(yōu)先權日2012年10月30日
發(fā)明者馬雯娟 申請人:中興通訊股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1