應用層到TCP層異步Socket數據傳輸方法及系統的製作方法
2023-08-11 13:03:36
專利名稱:應用層到TCP層異步Socket數據傳輸方法及系統的製作方法
技術領域:
本申請涉及半導體網絡通信技術,特別涉及一種應用層到TCP層異步Socket數據傳輸方法及系統。
背景技術:
TCP/IP協議保障了數據傳輸的到達和準確率,但未對應用層數據提交的完整性進行保障。在進行TCP數據流式傳輸的過程中,數據通常具備應用層協議,同步Socket中,在應用層發送數據時,會阻塞調用,直到所有的數據都提交到TCP層,但在異步Socket中,TCP層只接收能接收的數據容量,對於超出其接收範圍的,TCP層將不再接收,調用會立即返回。在TCP層進行數據遠程發送後,會空閒出空間,此時能夠再次接收外來數據,但需要應用方再次調用進行數據提交,方能提交數據到TCP層。可見TCP/IP協議在應用層發送數據時,無法保障在異步Socket傳輸中,完整的提交應用層協議數據到TCP層。例如,在GPRS (GeneralPacket Radio Service,通用分組無線服務技術)的網絡傳輸中,5KB/S的數據帶寬即可造成網絡的阻塞,進而造成到達TCP層的應用層協議數據的不完整。
發明內容
本申請要解決的技術問題是,保障TCP/IP協議在應用層發送數據時,在異步Socket傳輸中,完整的提交應用層協議數據到TCP層。為解決上述技術問題,本申請提供了一種應用層到TCP層異步Socket數據傳輸方法,包括以下步驟:一.設置一緩存器,用於緩存發送數據;設置一數據發送驅動模塊,用於每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層;二.接收應用層的發送調用,如果接收到應用層的發送調用則進行步驟三;三.判斷應用層的待發送數據的大小是否超過所述緩存器的總存儲空間,如果超過則進行步驟二,否則進行步驟四;四.判斷所述緩存器中是否緩存有數據,如果有則進行步驟五,否則進行步驟九;五.從所述緩存器中依先進先出順序推送不超過設定量的數據到TCP層;六.判斷所述緩存器中是否還緩存有數據,如果有則進行步驟七,否則進行步驟九;七.判斷應用層的待發送數據的大小是否超過所述緩存器的剩餘存儲空間,如果超過則進行步驟二,否則進行步驟八;八.保存待發送數據到所述緩存器,然後進行步驟二 ;九.推送不超過設定量的待發送數據到TCP層,如果待發送數據全部推送完畢,則進行步驟二,否則將剩餘的待發送數據保存到所述緩存器,然後進行步驟二。
為解決上述技術問題,本申請還提供了一種應用層到TCP層異步Socket數據傳輸系統,包括緩存器、數據發送驅動模塊、應用層調用接口模塊、數據控制模塊;所述緩存器,用於緩存發送數據;所述數據發送驅動模塊,用於每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層;所述應用層調用接口模塊,用於接收應用層的發送調用。所述數據控制模塊,用於在所述應用層調用接口模塊接收到應用層的發送調用後,控制將應用層的待發送數據直接推送到TCP層,或者保存到所述緩存器。所述數據控制模塊的具體工作過程如下:一.如果所述應用層調用接口模塊接收到應用層的發送調用,則進行步驟二 ;二.判斷應用層的待發送數據的大小是否超過所述緩存器的總存儲空間,如果未超過則進行步驟三;三.判斷所述緩存器中是否緩存有數據,如果有則進行步驟四,否則進行步驟八;四.從所述緩存器中依先進先出順序推送不超過設定量的數據到TCP層;五.判斷所述緩存器中是否還緩存有數據,如果有則進行步驟六,否則進行步驟八;六.判斷應用層的待發送數據的大小是否超過所述緩存器的剩餘存儲空間,如果未超過則進行步驟七;七.保存待發送數據到所述緩存器;八.推送不超過設定量的待發送數據到TCP層,如果待發送數據未能全部推送完畢,則將剩餘的待發送數據保存到所述緩存器。本申請的應用層到TCP層異步Socket數據傳輸方法及系統,應用層的待發送數據可能直接被提交到TCP層,也可能被緩存到緩存器中,甚至可能部分被提交進TCP層,部分緩存在緩存器。被緩存在緩存器中的數據,無需應用層的幹預,將會隨著TCP層的數據空間的空閒,主動被推送進TCP層。本申請的應用層到TCP層異步Socket數據傳輸方法及系統,能控制TCP/IP協議應用層的待發送數據完整進入或完全不進入TCP層,並為數據主動推送到TCP層提供驅動能力,從而在異步Socket的數據發送中,保障了應用層數據發送的完整性。
為了更清楚地說明本申請的技術方案,下面對本申請所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本申請的應用層到TCP層異步Socket數據傳輸方法一實施例示意圖;圖2是本申請的應用層到TCP層異步Socket數據傳輸系統一實施例示意圖。
具體實施例方式下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。應當理解,此處所描述的優選實施例僅用於說明和解釋本申請,並不用於限定本申請。並且在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互組合。基於本申請中的實施例,本領域普通技術人員所獲得的所有其他實施例,都屬於本申請保護的範圍。實施例一應用層到TCP層異步Socket數據傳輸方法,如圖1所示,包括以下步驟:一.設置一緩存器,用於緩存發送數據;設置一數據發送驅動模塊,用於每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層;二.接收應用層的發送調用,如果接收到應用層的發送調用則進行步驟三;三.判斷應用層的待發送數據的大小是否超過所述緩存器的總存儲空間(如100KB),如果超過則進行步驟二,否則進行步驟四;四.判斷所述緩存器中是否緩存有數據,如果有則進行步驟五,否則進行步驟九;五.從所述緩存器中依先進先出順序推送不超過設定量的數據到TCP層;六.判斷所述緩存器中是否還緩存有數據,如果有則進行步驟七,否則進行步驟九;七.判斷應用層的待發送數據的大小是否超過所述緩存器的剩餘存儲空間,如果超過則進行步驟二,否則進行步驟八;八.保存待發送數據到所述緩存器,然後進行步驟二 ;九.推送不超過設定量的待發送數據到TCP層,如果待發送數據全部推送完畢,則進行步驟二,否則將剩餘的待發送數據保存到所述緩存器,然後進行步驟二。該應用層到TCP層異步Socket數據傳輸方法,數據推送到TCP層有兩個流程:應用層調用觸發以及數據發送驅動觸發。應用層調用觸發,在接收到應用層的發送調用後,首先對應用層的待發送數據的大小進行判斷,如果數據量過大,超出了應用層緩存器的總存儲空間,將不對該待發送數據進行發送,因為一旦發送一個字節後,剩餘的字節無法保存進入緩存器中,那麼後續的數據將無法保存進緩存,從而無法對待發送數據的完整性提供保障。如果應用層的待發送數據的大小超過了緩存器的剩餘存儲空間,因上述同樣的原因,同樣將不對該待發送數據進行發送。當從所述緩存器中推送設定量數據到TCP層後,如果緩存器中還存在數據,那麼待發送數據將直接保存進緩存;如果緩存器中不存在數據,則直接把待發送數據推送到TCP層,如果不能全部推送,剩餘的數據將保存到緩存器中,等待下次再觸發(應用層調用觸發或數據發送驅動觸發)時再行發送。數據發送驅動觸發,每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層。實施例二應用層到TCP層異步Socket數據傳輸系統,如圖2所示,包括緩存器、數據發送驅動模塊、應用層調用接口模塊、數據控制模塊;所述緩存器,用於緩存發送數據;所述數據發送驅動模塊,用於每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層;
所述應用層調用接口模塊,用於接收應用層的發送調用,所述應用層調用接口模塊提供基於不同數據結構的多個應用層發送調用接口。所述數據控制模塊,用於在所述應用層調用接口模塊接收到應用層的發送調用後,控制將應用層的待發送數據直接推送到TCP層,或者保存到所述緩存器,具體工作過程如下:一.如果所述應用層調用接口模塊接收到應用層的發送調用,則進行步驟二 ;二.判斷應用層的待發送數據的大小是否超過所述緩存器的總存儲空間(如100KB),如果未超過則進行步驟三;三.判斷所述緩存器中是否緩存有數據,如果有則進行步驟四,否則進行步驟八;四.從所述緩存器中依先進先出順序推送不超過設定量的數據到TCP層;五.判斷所述緩存器中是否還緩存有數據,如果有則進行步驟六,否則進行步驟八;六.判斷應用層的待發送數據的大小是否超過所述緩存器的剩餘存儲空間,如果未超過則進行步驟七;七.保存待發送數據到所述緩存器;八.推送不超過設定量的待發送數據到TCP層,如果待發送數據未能全部推送完畢,則將剩餘的待發送數據保存到所述緩存器。該應用層到TCP層異步Socket數據傳輸系統,所述數據控制模塊對由所述應用層調用接口模塊傳遞進來的應用層的待發送數據,進行數據流程的控制。如果一次性發送數據量過大或者當前的緩存器剩餘存儲空間不足以放置待發送數據,數據將不被發送,否則如果緩存器中緩存有數據,則將先推送緩存器中的數據到TCP層,然後再發送當前應用層調用接口模塊傳遞進來的應用層的待發送數據接口提交的數據。所述緩存器用於緩存應用層的待發送數據,如果應用層的數據發送速度不過高,通常該緩存器中不會有數據,但是如果發送的數據發送速度過高,那麼在該緩存器中存放未能推送到TCP層的數據。所述數據發送驅動模塊主要用於對緩存器中的數據進行主動推送,從而在無需應用層幹預的情況下,達到對數據發送的主動驅動。本申請的應用層到TCP層異步Socket數據傳輸方法及系統,應用層的待發送數據可能直接被提交到TCP層,也可能被緩存到緩存器中,甚至可能部分被提交進TCP層,部分緩存在緩存器。被緩存在緩存器中的數據,無需應用層的幹預,將會隨著TCP層的數據空間的空閒,主動被推送進TCP層。本申請的應用層到TCP層異步Socket數據傳輸方法及系統,能控制TCP/IP協議應用層的待發送數據完整進入或完全不進入TCP層,並為數據主動推送到TCP層提供驅動能力,從而在異步Socket的數據發送中,保障了應用層數據發送的完整性。以上所述僅為本申請的較佳實施例而已,並不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的範圍之內。
權利要求
1.一種應用層到TCP層異步Socket數據傳輸方法,其特徵在於,包括以下步驟: 一.設置一緩存器,用於緩存發送數據;設置一數據發送驅動模塊,用於每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層; 二.接收應用層的發送調用,如果接收到應用層的發送調用則進行步驟三; 三.判斷應用層的待發送數據的大小是否超過所述緩存器的總存儲空間,如果超過則進行步驟二,否則進行步驟四; 四.判斷所述緩存器中是否緩存有數據,如果有則進行步驟五,否則進行步驟九; 五.從所述緩存器中依先進先出順序推送不超過設定量的數據到TCP層; 六.判斷所述緩存器中是否還緩存有數據,如果有則進行步驟七,否則進行步驟九; 七.判斷應用層的待發送數據的大小是否超過所述緩存器的剩餘存儲空間,如果超過則進行步驟二,否則進行步驟八; 八.保存待發送數據到所述緩存器,然後進行步驟二; 九.推送不超過設定量的待發送數據到TCP層,如果待發送數據全部推送完畢,則進行步驟二,否則將剩餘的待發送數據保存到所述緩存器,然後進行步驟二。
2.根據權利要求1所述的應用層到TCP層異步Socket數據傳輸方法,其特徵在於,所述緩存器的總存儲空間為100KB。
3.一種應用層到TCP層異步Socket數據傳輸系統,其特徵在於,包括緩存器、數據發送驅動模塊、應用層調用接口模塊、數據控制模塊; 所述緩存器,用於緩存發送數據; 所述數據發送驅動模塊,用於每隔一定的時間檢查所述緩存器是否存有數據,如果存有數據,則依先進先出順序推送不超過設定量的數據到TCP層; 所述應用層調用接口模塊,用於接收應用層的發送調用。
所述數據控制模塊,用於在所述應用層調用接口模塊接收到應用層的發送調用後,控制將應用層的待發送數據直接推送到TCP層,或者保存到所述緩存器。
4.根據權利要求3所述的應用層到TCP層異步Socket數據傳輸系統,其特徵在於, 所述數據控制模塊的具體工作過程如下: 一.如果所述應用層調用接口模塊接收到應用層的發送調用,則進行步驟二 ; 二.判斷應用層的待發送數據的大小是否超過所述緩存器的總存儲空間,如果未超過則進行步驟三; 三.判斷所述緩存器中是否緩存有數據,如果有則進行步驟四,否則進行步驟八; 四.從所述緩存器中依先進先出順序推送不超過設定量的數據到TCP層; 五.判斷所述緩存器中是否還緩存有數據,如果有則進行步驟六,否則進行步驟八; 六.判斷應用層的待發送數據的大小是否超過所述緩存器的剩餘存儲空間,如果未超過則進行步驟七; 七.保存待發送數據到所述緩存器; 八.推送不超過設定量的待發送數據到TCP層,如果待發送數據未能全部推送完畢,則將剩餘的待發送數據保存到所述緩存器。
5.根據權利要求3所述的應用層到TCP層異步Socket數據傳輸系統,其特徵在於,所述應用層調用接口模塊提供基於不同數據結構的多個應用層發送調用接口。
6.根據權利要求3所述的應用層到TCP層異步Socket數據傳輸系統,其特徵在於,所述緩存器的總存儲空間為100KB。 ·
全文摘要
本申請公開了一種應用層到TCP層異步Socket數據傳輸方法,數據推送到TCP層有兩個流程應用層調用觸發以及數據發送驅動觸發;應用層調用觸發,在接收到應用層的發送調用後,如果緩存器中不存在數據,則直接把待發送數據推送到TCP層,如果緩存器中存在數據並且應用層的待發送數據的大小小於緩存器的剩餘存儲空間,則將待發送數據將保存進緩存;等待下次應用層調用觸發或數據發送驅動觸發時再行發送;數據發送驅動觸發,每隔一定的時間檢查緩存器是否存有數據,如果存有數據,則推送數據到TCP層。本申請還公開了一種應用層到TCP層異步Socket數據傳輸系統。本申請,能保障TCP/IP協議在應用層發送數據時,在異步Socket傳輸中,完整的提交應用層協議數據到TCP層。
文檔編號H04L29/06GK103179087SQ20111043186
公開日2013年6月26日 申請日期2011年12月21日 優先權日2011年12月21日
發明者徐新, 吳建俊 申請人:上海飛田通信技術有限公司