新四季網

一種網絡數據的接收方法

2023-12-01 16:00:26

專利名稱:一種網絡數據的接收方法
技術領域:
本發明涉及網絡上的數據傳輸技術,特別涉及一種網絡數據的接收方法。
背景技術:
目前,利用網絡進行數據傳輸已經普及。例如:在視頻會議和視頻監控領域,視頻或者音頻採樣數據,通過特定的編碼算法編碼之後,形成的特定格式的數字媒體,往往需要通過網絡傳輸至網絡上的另外一端進行播放,這裡傳輸的數據就是一種流媒體數據。而作為流媒體的網絡接收端,其網絡接收性能直接影響到系統的整體性能。現有技術中,網絡數據的接收方法通常採用以下兩種:第一種:通過阻塞式的接收方式進行接收。這是最為簡單常用的一種網絡數據接收方式,即接收端應用程式為每一個網絡套接字建立一個線程,該線程對該套接字執行系統調用數據接收處理流程(recv),以進行網絡數據的接收。若沒有收到數據,則線程一直阻塞在對recv的調用上,直至收到數據為止。這種方式需要建立大量的線程專門用於網絡數據的接收,雖然有系統負荷允許的前提下,數據時延較小,但由於其大量消耗系統資源,整體性能極其受限,並發度比較低。第二種:通過作業系統支持的多路復用技術進行接收。這種方式是由一個線程監測應用中的所有網絡套接字,查看是否有數據到達,一旦檢測到有數據到達,立即進行接收。這種方式表面上資源消耗低,數據接收時延小,但在實際使用過程中會發現,監測網絡套接字的線程本身的監測操作會消耗大量系統資源,同時,當監測到某個套接字上有數據到達並去接收時,往往收到的數據量較小(因為剛剛有一小部分數據到達就被監測至IJ,並立即去接收),從而造成每次的接收調用recv都只能收到很少的數據,而接收的次數卻相當頻繁,這又進一步降低了系統的效率,實際應用效果會比較差。上述兩種網絡數據的接收方法對於流媒體數據的接收來說,缺陷更為明顯。

發明內容
有鑑於此,本發明的目的在於提供一種網絡數據的接收方法,以降低包括流媒體數據在內的網絡數據接收過程中的系統資源消耗。為達到上述目的,本發明提供了一種網絡數據的接收方法,包括:定時處理流程、接收者對象處理流程和數據接收處理流程。所述定時處理流程在每次定時時間到時,檢查預設的接收者對象註冊表,在接收對象註冊表不為空時,調用其中每個接收者的接收接口,驅動各個接收接口執行所述數據接收處理流程;所述接收者對象處理流程在一個接收會話初始化後,設置使用的套接字,,將該會話的接收者對象添加到所述接收者對象註冊表中,並由定時處理流程驅動在所述接收接口中操作套接字執行數據接收處理流程,在所述的接收接口執行完數據接收處理流程後,將該會話的接收者對象從接收者對象註冊表中刪除;所述數據接收流程為作業系統套接字提供的數據接收流程。較佳地,所述定時處理流程包括如下步驟:Al、建立並啟動定時器;A2、等待定時器超時;A3、在定時器超時時,重啟定時器;並檢查接收者對象註冊表,判斷其是否為空,如果為空,則返回步驟A2 ;否則,執行步驟A4 ;A4、調用接收者對象註冊表中每個接收者的接收接ロ,驅動各個接收接ロ執行所述數據接收處理流程;返回步驟A2。較佳地,所述步驟A2中,在等待定時器超時前,還包括:判斷系統是否關閉的步驟,在系統關閉時註銷定時器,結束流程。較佳地,所述接收接ロ為套接字;所述接收者對象處理流程為C++的一個數據接收基類的派生類流程;所述數據接收基類中封裝了開始接收接口和停止接收接ロ ;該派生類流程包括如下步驟:B1、接收會話初始化後,設置該會話使用的套接字的接收緩衝區;B2、調用數據接收基類中的開始接收接ロ,將該會話的接收者對象添加到所述接收者對象註冊表中;B3、判斷是否繼續接收網絡數據,如果是,則執行步驟B4 ;否則,執行步驟B5 ;B4、定時處理流程驅動在所述接收接口中操作套接字執行數據接收處理流程後,返回步驟B3 ;B5、調用數據接收基類中的停止接收接ロ,將該會話的接收者對象從接收者對象註冊表中刪除後,結束流程。較佳地,所述步驟BI中,套接字接收緩衝區的大小根據網絡數據平均碼流的大小和定時器時間間隔設置。較佳地,若系統具有多個CPU,則在定時處理流程中建立與CPU數量相同的定時器;每個定時器對應設置一個接收者對象註冊表;每個定時器超時時檢查各自對應的接收者對象註冊表;所述步驟B2中,數據接收基類中的開始接收接ロ,將該會話的接收者對象添加到最不繁忙的接收者對象註冊表中。較佳地,平均每個定時器由ー個線程承載,多個線程由多個CPU承載。較佳地,步驟B3所述判斷是否繼續接收網絡數據為:判斷是否數據接收完畢或者判斷是否網絡異常;如果數據接收完畢或者網絡異常,則判定不繼續接收網絡數據。較佳地,所述接收對象註冊表由ー隊列實現,其中保存了各個接收會話對應的所述派生類實例的指針。較佳地,所述定時器定時時間為10-20毫秒。由上述的技術方案可見,本發明的這種網絡數據的接收方法,通過增加定時處理流程和接收者對象處理流程,與現有作業系統套接字的數據接收處理流程相配合,實現了以固定間隔地周期性接收網絡數據,從而降低了網絡數據接收過程中的系統消耗。特別是對於流媒體數據,由於流媒體數據本身具有周期性大量數據到達的特徵,採用本發明的網絡數據接收方法進行接收,效果更為顯著。


圖1為本發明網絡數據接收方法一較佳實施例中定時處理流程圖;圖2為圖1所示實施例中流媒體接收派生類的處理流程圖。
具體實施例方式以下參照附圖,並舉具體實施例對本發明進行詳細說明。本發明的這種網絡數據的接收方法,通過增加定時處理流程和接收者對象處理流程,與現有作業系統的數據接收處理流程相配合,實現了以固定間隔地周期性接收網絡數據,從而降低了網絡數據接收過程中的系統消耗。這種方法特別適合於流媒體數據的網絡接收。這是因為流媒體數據有ー個固有特徵,即媒體數據播放是以幀為單位進行,幀與幀之間是有時間間隔的。對於流媒體數據而言,是指媒體源端開始網絡發送一幀時,產生大量網絡數據包,佔用較大網絡帶寬,而之後,在媒體源端發送下ー幀之前,網絡數據流量很少。並且在網絡延遲上,也是以幀為統計単位的,只有ー幀完全接收完整時,才能統計這一幀的延遲。由於流媒體數據的這個特徵,流媒體數據到達網絡接收端時,也表現為周期性的大量數據到達。所以利用作業系統套接字提供的可設置接收緩衝和數據接收處理流程,以固定時間間隔地周期性接收流媒體數據,能夠降低系統消耗而又不會人為降低呑吐率和增加延時。當然,這種接收方式並非僅適合流媒體數據,對於普通數據,如果單位數據包延遲要求並不太高而流量穩定時,都是適用的,特別是希望優化網絡接收的系統CPU佔用率吋。如後臺伺服器之間穩定的數據交換時使用。以下以流媒體數據的接收過程為例,對本發明進行詳細說明。本實施例中的流媒體數據的接收方法,主要包括兩方面的內容:1、定時器或者周期性穩定觸發的其他裝置實現定時處理流程,該定時處理流程能以毫秒級的精度,固定周期地驅動網絡數據接收處理流程。2、實現網絡接收接口數據接收的C++基類一CMediaRecver及派生類,在基類中封裝開始接收(StartRecv)接口和停止接收(StopRecv)接ロ,該CMediaRecver派生類流程就是ー種接收者對象處理流程,在該CMediaRecver派生類流程中定義需要具體實現的作業系統的數據接收處理流程。其中,作業系統的數據接收處理流程與現有技術相同,這裡不再贅述。以下對本實施例的定時處理流程和CMediaRecver派生類流程分別進行詳細說明。本實施例的定時處理流程如圖1所示,在系統啟動後,執行如下步驟:步驟101、建立並啟動定時器。本實施例中,定時器的定時時間參照流媒體數據的固有特徵,設置為10-20毫秒,假設本實施例中設置為20毫秒。本實施例中,假設系統為單CPU系統,則只需建立並啟動一個定時器。在其他實施例中,如果系統為多CPU系統,則可以將定時器的數量設置為與CPU的數量相同,ー個CPU對應建立並啟動一個定時器。 另外,本實施例中平均每個定時器由ー個線程承載,多個線程由多個CPU承載,從而更好地利用了多CPU的運算資源。步驟102、判斷系統是否關閉,如果是,則執行步驟106 ;否則執行步驟103。本步驟中可以通過判斷是否收到上層應用發送的系統關閉命令來判斷系統是否關閉。步驟103、等待定時器超時,在定時器超時時,重啟定時器並執行步驟104。步驟104、判斷接收者對象註冊表是否為空,如果是,則返回步驟102 ;否則執行步驟 105。實際應用中,接收對象註冊表中可以由ー個隊列或者其他數據結構來實現,其中的內容是在CMediaRecver派生類流程中,由StartRecv接ロ寫入的接收會話對應的CMediaRecver派生類實例的指針。若系統僅啟動了ー個定時器,則該隊列中包含整個系統的接收者的所有CMediaRecver派生類實例。若系統存在多個CPU,而啟動了多個定時器,則每個定時器會有單獨的一個隊列與其對應。CMediaRecver基類中的StartRecv會自動完成將自身註冊入最不繁忙的那個定時器的接收對象註冊表隊列中。步驟105、調用接收者對象註冊表中各個接收者對象的一個接收接ロ,的,派生類在此接口中再操作套接字執行網絡數據接收處理流程;返回步驟102。在本實施例中,接收接ロ為作業系統的套接字。步驟106、註銷定時器,結束流程。本實施例中,CMediaRecver派生類流程如圖2所示,在接收會話初始化完成後,執行如下步驟:步驟201、設置該會話使用的套接字的接收緩衝區。本實施例中,會將套接字的接收緩衝區設置較大。具體設置的值可以根據數據的平均碼流大小、設置的定時器時間間隔而定。若時間間隔為20毫秒,而碼流較大,可以將套接字的接收緩衝區設置為較大,如200k。若設置的定時器時間間隔較小,如10毫秒,則可以適當減少套接字的接收緩衝區的大小。為方便起見,在系統允許範圍內,將套接字的接收緩衝區設置為最大即可。步驟202、調用CMediaRecver基類的開始接收接ロ,將會話接收者對象添加到接收者對象註冊表。本實施例中,就是將接收會話對應的CMediaRecver派生類實例的指針,添加到接收對象註冊表隊列中。在其他實施例中,若系統存在多個CPU,而啟動了多個定時器的情況下,CMediaRecver基類中的StartRecv會自動完成將自身註冊入最不繁忙的那個定時器的接收對象註冊表隊列中。步驟203、判斷是否繼續接收流媒體數據,如果是,則執行步驟204 ;否則,執行步驟 205 ;本步驟中,具體為判斷是否數據接收完畢或者判斷是否網絡異常;如果數據接收完畢或者網絡異常,則判定不繼續接收網絡數據。
步驟204、由定時器處理流程驅動,調用套接字,執行數據接收處理流程後,返回步驟 203。步驟205、調用CMediaRecver基類的停止接收接ロ,將會話接收者對象從接收者對象註冊表中刪除後,結束流程。本步驟中,就是將接收對象註冊 表隊列中,該接收會話對應的CMediaRecver派生類實例的指針刪除。本實施例的流媒體接收方法,其定時器間隔是可調整的,一般來說,20毫秒的間隔能處理普遍的應用。這 是建立在作業系統套接字接收緩衝區一般可以設置到200k字節以上,而平均每20毫秒協議棧接收200k字節數據量,則達到系統接收一路流媒體時的最大吞吐量,約為78Mbps。若系統處理的可預見的最大網絡吞吐量接近或大於此值,則可以降低定時器超時時間間隔,如由20毫秒修改為10毫秒。由上述的實施例可見,本發明的這種網絡數據的接收方法,不僅能夠在不降低網絡吞吐率且不增加數據延時的情況下,大幅降低接收進程的系統資源消耗,從而有效地提高網絡數據的接收性能。而且處理邏輯簡單,具有更好的可擴展性和可維護性。
權利要求
1.一種網絡數據的接收方法,其特徵在於:包括定時處理流程、接收者對象處理流程和數據接收處理流程; 所述定時處理流程在每次定時時間到時,檢查預設的接收者對象註冊表,在接收對象註冊表不為空時,調用其中每個接收者的接收接口,驅動各個接收接口執行所述數據接收處理流程; 所述接收者對象處理流程在一個接收會話初始化後,設置使用的套接字,,將該會話的接收者對象添加到所述接收者對象註冊表中,並由定時處理流程驅動在所述接收接口中操作套接字執行數據接收處理流程,在所述的接收接口執行完數據接收處理流程後,將該會話的接收者對象從接收者對象註冊表中刪除; 所述數據接收流程為作業系統套接字提供的數據接收流程。
2.按權利要求1所述的接收方法,其特徵在於,所述定時處理流程包括如下步驟: Al、建立並啟動定時器; A2、等待定時器超時; A3、在定時器超時時,重啟定時器;並檢查接收者對象註冊表,判斷其是否為空,如果為空,則返回步驟A2 ;否則,執行步驟A4 ; A4、調用接收者對象註冊表中每個接收者的接收接口,驅動各個接收接口執行所述數據接收處理流程;返回步驟A2。
3.按權利要求2所述的接收方法,其特徵在於:所述步驟A2中,在等待定時器超時前,還包括:判斷系統是否關閉的步 驟,在系統關閉時註銷定時器,結束流程。
4.按權利要求2所述的接收方法,其特徵在於: 所述接收者對象處理流程為C++的一個數據接收基類的派生類流程; 所述數據接收基類中封裝了開始接收接口和停止接收接口; 該派生類流程包括如下步驟: B1、接收會話初始化後,設置該會話使用的套接字的接收緩衝區; B2、調用數據接收基類中的開始接收接口,將該會話的接收者對象添加到所述接收者對象註冊表中; B3、判斷是否繼續接收網絡數據,如果是,則執行步驟B4 ;否則,執行步驟B5 ; B4、定時處理流程驅動在所述接收接口中操作套接字執行數據接收處理流程後,返回步驟B3 ; B5、調用數據接收基類中的停止接收接口,將該會話的接收者對象從接收者對象註冊表中刪除後,結束流程。
5.按權利要求4所述的接收方法,其特徵在於,所述步驟BI中,套接字接收緩衝區的大小根據網絡數據平均碼流的大小和定時器時間間隔設置。
6.按權利要求4所述的接收方法,其特徵在於,若系統具有多個CPU,則在定時處理流程中建立與CPU數量相同的定時器;每個定時器對應設置一個接收者對象註冊表;每個定時器超時時檢查各自對應的接收者對象註冊表; 所述步驟B2中,數據接收基類中的開始接收接口,將該會話的接收者對象添加到最不繁忙的接收者對象註冊表中。
7.按權利要求6所述的接收方法,其特徵在於,平均每個定時器由一個線程承載,多個線程由多個CPU承載。
8.按權利要求4所述的接收方法,其特徵在於,步驟B3所述判斷是否繼續接收網絡數據為:判斷是否數據接收完畢或者判斷是否網絡異常;如果數據接收完畢或者網絡異常,則判定不繼續接收網絡數據。
9.按權利要求4-8任一項所述的接收方法,其特徵在於,所述接收對象註冊表由一隊列實現,其中保存了各個接收會話對應的所述派生類實例的指針。
10.按權利要求1-8任一項所述的接收方法,其特徵在於,所述定時器定時時間為10-20毫秒 。
全文摘要
本發明公開了一種網絡數據的接收方法,包括定時處理流程、接收者對象處理流程和數據接收處理流程;所述定時處理流程在每次定時時間到時,檢查接收者對象註冊表,在接收對象註冊表不為空時,調用其中每個接收者的接收接口,驅動各個接收接口執行所述數據接收處理流程;所述接收者對象處理流程在一個接收會話初始化後,設置使用的套接字,將該會話的接收者對象添加到所述接收者對象註冊表中,並由定時處理流程驅動操作套接字執行數據接收處理流程,在對應的接收接口執行完數據接收處理流程後,將該會話的接收者對象從接收者對象註冊表中刪除。應用本發明,能夠有效地降低網絡數據接收過程中的系統資源消耗。
文檔編號H04L29/06GK103095646SQ201110336749
公開日2013年5月8日 申請日期2011年10月28日 優先權日2011年10月28日
發明者周明偉, 何林強, 張興明, 傅利泉, 朱江明, 吳軍, 吳堅 申請人:浙江大華技術股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀