一種基于sip的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法和系統(tǒng),流數(shù)據(jù)接收客戶端向SIP信令服務(wù)器發(fā)送申請數(shù)據(jù)流命令,SIP信令服務(wù)器把消息轉(zhuǎn)發(fā)到流數(shù)據(jù)發(fā)送服務(wù)器,流數(shù)據(jù)發(fā)送服務(wù)器返回消息,里面包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,流數(shù)據(jù)接收客戶端可以根據(jù)此標(biāo)志判斷是否需要走斷點(diǎn)續(xù)傳流程;需要斷點(diǎn)續(xù)傳功能的話,流數(shù)據(jù)接收客戶端向SIP信令服務(wù)器申請分段信息,SIP信令服務(wù)器轉(zhuǎn)發(fā)到流數(shù)據(jù)發(fā)送服務(wù)器上,流數(shù)據(jù)發(fā)送服務(wù)器根據(jù)流的情況計(jì)算分段信息,返回給流數(shù)據(jù)接收客戶端;流數(shù)據(jù)接收客戶端根據(jù)自身的設(shè)置和需要,可以同時(shí)向SIP信令服務(wù)器發(fā)送多個(gè)斷點(diǎn)續(xù)傳的數(shù)據(jù)流,必要包含的數(shù)據(jù)包括段號、序號、接收端口號。
【專利說明】一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,具體地,涉及一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法和系統(tǒng)。
【背景技術(shù)】
[0002]近年來SIP協(xié)議越來越得到重視和發(fā)展,尤其是隨著安防視頻技術(shù)的發(fā)展,為了解決視頻系統(tǒng)的互聯(lián)互通、信息共享,公安部推動(dòng)國標(biāo)GB/T 28181標(biāo)準(zhǔn)的制定,而該國標(biāo)是基于SIP協(xié)議的,各大安防廠家都爭相推出各自的基于SIP的產(chǎn)品。
[0003]SIP (Sess1n Initiat1n Protocol)是一個(gè)應(yīng)用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個(gè)或多個(gè)參與者的會(huì)話。SIP的一個(gè)重要特點(diǎn)是它不定義要建立的會(huì)話的類型,而只定義應(yīng)該如何管理會(huì)話。有了這種靈活性,也就意味著SIP可以用于眾多應(yīng)用和服務(wù)中,包括交互式游戲、音樂和視頻點(diǎn)播以及語音、視頻和Web會(huì)議。SIP消息是基于文本的,因而易于讀取和調(diào)試。SIP較為靈活,可擴(kuò)展,而且是開放的。
[0004]目前采用基于SIP的國標(biāo)中,傳輸數(shù)據(jù)是在UDP上的,UDP本身是一種無連接的協(xié)議,它只管發(fā)送,而不需要知道發(fā)送的包是不是準(zhǔn)確的到達(dá)了目的地,所以它具有發(fā)送效率高、速度快、占用資源少等優(yōu)點(diǎn),在傳輸實(shí)時(shí)數(shù)據(jù)中可以提高系統(tǒng)傳輸數(shù)據(jù)的效率,但是也存在一些問題:不具備保障可靠傳送數(shù)據(jù)的傳輸機(jī)制,不能滿足應(yīng)用程序傳輸數(shù)據(jù)、消息的可靠性要求;而且沒有斷點(diǎn)續(xù)傳的機(jī)制,遇到網(wǎng)絡(luò)故障時(shí),數(shù)據(jù)傳輸必須重頭開始,由此造成了大量時(shí)間的浪費(fèi)。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法和系統(tǒng)。
[0006]根據(jù)本發(fā)明提供的一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法,其特征在于,包括:
步驟S001:流數(shù)據(jù)接收客戶端通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一數(shù)據(jù)申請請求;
步驟S002:流數(shù)據(jù)發(fā)送服務(wù)器接收到所述數(shù)據(jù)申請請求后,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端返回一第一反饋消息,所述第一反饋消息包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志;步驟S003:若支持?jǐn)帱c(diǎn)續(xù)傳,則流數(shù)據(jù)接收客戶端通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一分段請求;
步驟S004:流數(shù)據(jù)發(fā)送服務(wù)器根據(jù)需要傳輸?shù)牧鲾?shù)據(jù)計(jì)算分段信息,進(jìn)而通過SIP信令服務(wù)器將所述分段信息發(fā)送給流數(shù)據(jù)接收客戶端;
步驟S005:流數(shù)據(jù)接收客戶端響應(yīng)所述分段信息自動(dòng)根據(jù)自身的設(shè)置和需要,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一流數(shù)據(jù)預(yù)接收信息,所述流數(shù)據(jù)預(yù)接收信息包含請求傳輸?shù)脑摱瘟鲾?shù)據(jù)所對應(yīng)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號; 步驟S006:流數(shù)據(jù)發(fā)送服務(wù)器接收到所述流數(shù)據(jù)預(yù)接收信息后,然后通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息。
[0007]步驟S007:流數(shù)據(jù)接收客戶端接收所述確認(rèn)信息后,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送最終請求消息,表示準(zhǔn)備接收;
步驟S008:進(jìn)行該段流數(shù)據(jù)的傳輸;
在步驟S008數(shù)據(jù)傳輸過程中,若發(fā)生網(wǎng)絡(luò)中斷或者系統(tǒng)認(rèn)為中斷,流數(shù)據(jù)接收客戶端保存當(dāng)前正在傳輸?shù)牧鲾?shù)據(jù)的中斷點(diǎn)信息,所述中斷點(diǎn)信息包含被中斷傳輸?shù)牧鲾?shù)據(jù)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,網(wǎng)絡(luò)恢復(fù)時(shí)流數(shù)據(jù)接收客戶端根據(jù)從文件中讀取的所述中斷點(diǎn)信息返回步驟S005重新申請流數(shù)據(jù)。
[0008]步驟S009:流數(shù)據(jù)接收客戶端接收完整的一段流數(shù)據(jù)后,重復(fù)步驟S005至S008,直至所有流數(shù)據(jù)傳輸完整為止。
[0009]進(jìn)一步地,所述步驟SOOl的流數(shù)據(jù)發(fā)送服務(wù)器與SIP信令服務(wù)器一一對應(yīng)。
[0010]進(jìn)一步地,多個(gè)流數(shù)據(jù)發(fā)送服務(wù)器對應(yīng)一個(gè)SIP信令服務(wù)器,步驟SOOl還包括: 步驟SI 1: SIP信令服務(wù)器根據(jù)配置或者動(dòng)態(tài)資源占用情況分配資源給流數(shù)據(jù)服務(wù)器; 步驟S12:流數(shù)據(jù)接收客戶端發(fā)送數(shù)據(jù)申請請求時(shí),根據(jù)步驟Sll分配的情況,選擇流數(shù)據(jù)服務(wù)器,申請請求指定的流數(shù)據(jù)。
[0011]進(jìn)一步地,在所述步驟S006中,流數(shù)據(jù)發(fā)送服務(wù)器接收到所述流數(shù)據(jù)預(yù)接收信息后:
流數(shù)據(jù)發(fā)送服務(wù)器判斷該段數(shù)據(jù)流是否有數(shù)據(jù);
是,則通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息;
否,則暫不做反饋,直至收到新的數(shù)據(jù)。
[0012]進(jìn)一步地,所述步驟S005中還包含流數(shù)據(jù)接收客戶端為接收該段流數(shù)據(jù)創(chuàng)建一接收端口,開辟相應(yīng)的接收線程,所述自身的設(shè)置包含所述接收端口和接收線程,所述自身需要包含流數(shù)據(jù)接收客戶端預(yù)接收的該段流數(shù)據(jù)。
[0013]進(jìn)一步地,步驟S004所述分段信息包含段的數(shù)量、每個(gè)段的大小、段的起始段號、每個(gè)段按MTU分配的小段,小段對應(yīng)的序號。
[0014]一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸系統(tǒng),其特征在于,包含:
流數(shù)據(jù)接收客戶端用于:
通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一數(shù)據(jù)申請請求,
根據(jù)自流數(shù)據(jù)發(fā)送服務(wù)器接收到的第一反饋消息中所包含的是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,自動(dòng)判斷是否斷點(diǎn)續(xù)傳,是,則通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送分段請求,
響應(yīng)自流數(shù)據(jù)發(fā)送服務(wù)器接收到分段信息自動(dòng)根據(jù)自身的設(shè)置和需要,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一流數(shù)據(jù)預(yù)接收信息,所述流數(shù)據(jù)預(yù)接收信息包含請求傳輸?shù)脑摱瘟鲾?shù)據(jù)所對應(yīng)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,
根據(jù)自流數(shù)據(jù)發(fā)送服務(wù)器接收到的確認(rèn)信息,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送最終請求消息,
若發(fā)生網(wǎng)絡(luò)中斷或者系統(tǒng)認(rèn)為中斷,保存當(dāng)前正在傳輸?shù)牧鲾?shù)據(jù)的中斷點(diǎn)信息,所述中斷點(diǎn)信息包含被中斷傳輸?shù)牧鲾?shù)據(jù)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,網(wǎng)絡(luò)恢復(fù)時(shí)根據(jù)從文件中讀取的所述中斷點(diǎn)信息重新申請流數(shù)據(jù);
流數(shù)據(jù)發(fā)送服務(wù)器用于:
根據(jù)自流數(shù)據(jù)接收客戶端接收到的數(shù)據(jù)申請請求,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端返回第一反饋消息,所述第一反饋消息包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,
根據(jù)自流數(shù)據(jù)接收客戶端接收到的分段請求以及流數(shù)據(jù)接收客戶端申請的需要傳輸?shù)牧鲾?shù)據(jù)計(jì)算分段信息,進(jìn)而通過SIP信令服務(wù)器將所述分段信息發(fā)送給流數(shù)據(jù)接收客戶端,
根據(jù)自流數(shù)據(jù)接收客戶端接收到的流數(shù)據(jù)預(yù)接收信息,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息,
SIP信令服務(wù)器用于:
流數(shù)據(jù)接收客戶端和流數(shù)據(jù)發(fā)送服務(wù)器之間的消息轉(zhuǎn)發(fā)。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
本發(fā)明的提供一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法,該方法基于SIP的流數(shù)據(jù)分塊算法、利用SIP協(xié)議描述分塊信息、重傳依據(jù),實(shí)現(xiàn)流斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法。
【專利附圖】
【附圖說明】
[0016]為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單的介紹,顯而易見,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。附圖中:
圖1為基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法的信令控制流序列圖;
圖2為基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法的斷點(diǎn)續(xù)傳信令控制流序列圖;
圖3為基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法的申請斷點(diǎn)續(xù)傳流的流程;
圖4為基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法的斷點(diǎn)續(xù)傳流程。
【具體實(shí)施方式】
[0017]下面結(jié)合附圖以具體實(shí)施例的方式對本發(fā)明進(jìn)行詳細(xì)說明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明的保護(hù)范圍。
[0018]本發(fā)明提供的基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法,其流程如圖3所示,包括:
步驟S1:流數(shù)據(jù)接收客戶端注冊到SIP信令服務(wù)器,獲取必要信息。
[0019]步驟S2:流數(shù)據(jù)接收客戶端通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一數(shù)據(jù)申請請求。
[0020]步驟S3:流數(shù)據(jù)發(fā)送服務(wù)器接收到所述數(shù)據(jù)申請請求后,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端返回一第一反饋消息,所述第一反饋消息包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)
O
[0021]步驟S4:若支持?jǐn)帱c(diǎn)續(xù)傳,則流數(shù)據(jù)接收客戶端通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一分段請求,若不支持,則轉(zhuǎn)入其他SIP流程。
[0022]步驟S5:流數(shù)據(jù)發(fā)送服務(wù)器根據(jù)需要傳輸?shù)牧鲾?shù)據(jù)計(jì)算分段信息,進(jìn)而通過SIP信令服務(wù)器將所述分段信息發(fā)送給流數(shù)據(jù)接收客戶端。分段信息包含段的數(shù)量、每個(gè)段的大小、段的起始段號、每個(gè)段按MTU(最大傳輸單元)分配的小段,小段對應(yīng)的所有序號。
[0023]TCP/IP協(xié)議中最大傳輸單元,需要根據(jù)網(wǎng)絡(luò)情況設(shè)置,一般設(shè)置在1400字節(jié)以下步驟S6:流數(shù)據(jù)接收客戶端響應(yīng)所述分段信息自動(dòng)根據(jù)自身的設(shè)置和需要,通過SIP
信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一流數(shù)據(jù)預(yù)接收信息,所述流數(shù)據(jù)預(yù)接收信息包含請求傳輸?shù)脑摱瘟鲾?shù)據(jù)所對應(yīng)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號;
其中,流數(shù)據(jù)接收客戶端為接收該段流數(shù)據(jù)創(chuàng)建一接收端口,開辟相應(yīng)的接收線程,所述自身的設(shè)置包含所述接收端口和接收線程,所述自身需要包含流數(shù)據(jù)接收客戶端預(yù)接收的該段流數(shù)據(jù)。
[0024]步驟S7:流數(shù)據(jù)發(fā)送服務(wù)器接收到所述流數(shù)據(jù)預(yù)接收信息后,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息,表示請求已處理。
[0025]步驟S8:流數(shù)據(jù)接收客戶端接收所述確認(rèn)信息后,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送最終請求消息,表示準(zhǔn)備接收。
[0026]步驟S9:進(jìn)行該段流數(shù)據(jù)的傳輸。
[0027]步驟SlO:流數(shù)據(jù)接收客戶端接收完整的一段流數(shù)據(jù)后,重復(fù)步驟S6至S9,直至所有流數(shù)據(jù)傳輸完整為止。
[0028]流數(shù)據(jù)接收客戶端按段接收數(shù)據(jù),并根據(jù)所述分段信息對接收到的分段流數(shù)據(jù)進(jìn)行排序。
[0029]本發(fā)明所述步驟S2的流數(shù)據(jù)發(fā)送服務(wù)器可以與SIP信令服務(wù)器一一對應(yīng),也可以多個(gè)流數(shù)據(jù)發(fā)送服務(wù)器對應(yīng)一個(gè)SIP信令服務(wù)器。
[0030]當(dāng)流數(shù)據(jù)發(fā)送服務(wù)器與SIP信令服務(wù)器一一對應(yīng)時(shí),基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法如步驟SI至步驟S6。
[0031]當(dāng)多個(gè)流數(shù)據(jù)發(fā)送服務(wù)器對應(yīng)一個(gè)SIP信令服務(wù)器時(shí),步驟S2還包括:
步驟1:流數(shù)據(jù)發(fā)送服務(wù)器向SIP信令服務(wù)器注冊;
步驟2: SIP信令服務(wù)器根據(jù)配置或者動(dòng)態(tài)資源占用情況分配資源給流數(shù)據(jù)服務(wù)器;步驟3:流數(shù)據(jù)接收客戶端發(fā)送數(shù)據(jù)申請請求時(shí),根據(jù)步驟2分配的情況,選擇選擇流數(shù)據(jù)服務(wù)器,申請請求指定的流數(shù)據(jù),如某個(gè)視頻資源。
[0032]流數(shù)據(jù)接收客戶端根據(jù)步驟S5中獲得的分段信息中的序號將接收到的分段的流數(shù)據(jù)重新排列,按序號順序組合每個(gè)段的數(shù)據(jù)包。流數(shù)據(jù)接收客戶端在每當(dāng)一個(gè)段的數(shù)據(jù)接收完整后,為當(dāng)前記錄的段號自增I。
[0033]自增段號操作完成后,流數(shù)據(jù)接收客戶端重復(fù)步驟S6重新向流數(shù)據(jù)發(fā)送服務(wù)器申請新的后繼段號的流數(shù)據(jù),流數(shù)據(jù)接收客戶端維護(hù)正在接收的段號的唯一性,當(dāng)重新申請時(shí),保證當(dāng)前的段號是加鎖保護(hù)的,即段號在自增操作前,先進(jìn)行鎖定操作,自增操作完成后,釋放鎖定操作,保證在該自增過程中,接收完完整數(shù)據(jù)的該段號不會(huì)被其他可能的地方修改。
[0034]在所述步驟S7中,流數(shù)據(jù)發(fā)送服務(wù)器接收到所述流數(shù)據(jù)預(yù)接收信息后: 流數(shù)據(jù)發(fā)送服務(wù)器判斷該段數(shù)據(jù)流是否有數(shù)據(jù);
是,則通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息;
否,則暫不做反饋,直至收到新的數(shù)據(jù)。
[0035]在數(shù)據(jù)傳輸過程中,若發(fā)生網(wǎng)絡(luò)中斷或者系統(tǒng)認(rèn)為中斷,流數(shù)據(jù)接收客戶端保存當(dāng)前正在傳輸?shù)牧鲾?shù)據(jù)的分段信息以及中斷點(diǎn)信息,所述中斷點(diǎn)信息包含被中斷傳輸?shù)臄?shù)據(jù)段的段號、序號等信息。網(wǎng)絡(luò)恢復(fù)時(shí)流數(shù)據(jù)接收客戶端重新申請流數(shù)據(jù),從文件中讀取所述存儲(chǔ)的分段信息和中斷點(diǎn)信息,重新按照段號、序號向流數(shù)據(jù)發(fā)送服務(wù)器申請流數(shù)據(jù)。每個(gè)段拆分成很多按照序號區(qū)分的小段,可以大大減少重傳的數(shù)據(jù)。
[0036]由于本發(fā)明是基于流數(shù)據(jù)的,流數(shù)據(jù)發(fā)送服務(wù)器端并不能長期保持?jǐn)?shù)據(jù),所以本實(shí)施例在服務(wù)器端做斷點(diǎn)續(xù)傳時(shí),把流數(shù)據(jù)設(shè)計(jì)成緩沖數(shù)據(jù),保存一定量的流數(shù)據(jù),緩沖的大小根據(jù)實(shí)際內(nèi)存的容量設(shè)定,一般不會(huì)超過內(nèi)存的80%,當(dāng)緩沖大小達(dá)到設(shè)定的大小后,會(huì)根據(jù)先進(jìn)先出的原則,釋放掉最早的數(shù)據(jù)。所以,如果發(fā)生當(dāng)前緩沖數(shù)據(jù)超過設(shè)定的大小時(shí),最早的數(shù)據(jù)會(huì)給丟棄,而此時(shí)如果流數(shù)據(jù)庫客戶端正好在丟棄的數(shù)據(jù)段斷點(diǎn),由于數(shù)據(jù)已經(jīng)在流數(shù)據(jù)發(fā)送服務(wù)器端丟棄,流數(shù)據(jù)接收客戶端將不能重新申請?jiān)摱蔚臄?shù)據(jù)。
[0037]本實(shí)施例還包括一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸系統(tǒng),其特征在于,包含:
流數(shù)據(jù)接收客戶端用于:
通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一數(shù)據(jù)申請請求,
根據(jù)自流數(shù)據(jù)發(fā)送服務(wù)器接收到的第一反饋消息中所包含的是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,自動(dòng)判斷是否斷點(diǎn)續(xù)傳,是,則通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送分段請求,
響應(yīng)自流數(shù)據(jù)發(fā)送服務(wù)器接收到分段信息自動(dòng)根據(jù)自身的設(shè)置和需要,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一流數(shù)據(jù)預(yù)接收信息,所述流數(shù)據(jù)預(yù)接收信息包含請求傳輸?shù)脑摱瘟鲾?shù)據(jù)所對應(yīng)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,
根據(jù)自流數(shù)據(jù)發(fā)送服務(wù)器接收到的確認(rèn)信息,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送最終請求消息,
若發(fā)生網(wǎng)絡(luò)中斷或者系統(tǒng)認(rèn)為中斷,保存當(dāng)前正在傳輸?shù)牧鲾?shù)據(jù)的中斷點(diǎn)信息,所述中斷點(diǎn)信息包含被中斷傳輸?shù)牧鲾?shù)據(jù)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,網(wǎng)絡(luò)恢復(fù)時(shí)根據(jù)從文件中讀取的所述中斷點(diǎn)信息重新申請流數(shù)據(jù);
流數(shù)據(jù)發(fā)送服務(wù)器用于:
根據(jù)自流數(shù)據(jù)接收客戶端接收到的數(shù)據(jù)申請請求,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端返回第一反饋消息,所述第一反饋消息包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,
根據(jù)自流數(shù)據(jù)接收客戶端接收到的分段請求以及流數(shù)據(jù)接收客戶端申請的需要傳輸?shù)牧鲾?shù)據(jù)計(jì)算分段信息,進(jìn)而通過SIP信令服務(wù)器將所述分段信息發(fā)送給流數(shù)據(jù)接收客戶端,
根據(jù)自流數(shù)據(jù)接收客戶端接收到的流數(shù)據(jù)預(yù)接收信息,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息,
SIP信令服務(wù)器用于:
流數(shù)據(jù)接收客戶端和流數(shù)據(jù)發(fā)送服務(wù)器之前的消息轉(zhuǎn)發(fā)。
[0038]由于是基于流的數(shù)據(jù),傳輸?shù)臅r(shí)候并不知道流的大小,故流數(shù)據(jù)發(fā)送服務(wù)器在拆分?jǐn)?shù)據(jù)的時(shí)候采用固定大小的數(shù)據(jù)包,流數(shù)據(jù)發(fā)送服務(wù)器與流數(shù)據(jù)接收客戶端通信并協(xié)商,采用基于SIP協(xié)議的MESSAGE來描述。數(shù)據(jù)封包結(jié)構(gòu)包括:段號、序號、長度等。其中段號是把流拆分成若干個(gè)段,由流數(shù)據(jù)發(fā)送服務(wù)器處理維護(hù)管理;序號是每段內(nèi)按MTU的大小拆分成各個(gè)小數(shù)據(jù),序號自增。接收端接收到流數(shù)據(jù)后按段號和序號進(jìn)行排序,具體流如圖1和圖3所示。
[0039]本實(shí)施例中MTU的值在操作系統(tǒng)中設(shè)定,該拆分?jǐn)?shù)據(jù)大小通過流數(shù)據(jù)發(fā)送服務(wù)器與流數(shù)據(jù)接收客戶端通信并協(xié)商確定。
[0040]本實(shí)施例流數(shù)據(jù)分段傳輸?shù)木唧w步驟流程如下:
1、流數(shù)據(jù)接收客戶端發(fā)送SIP的INVITE申請流數(shù)據(jù),如步驟S2;
2、信令服務(wù)端接收后,向流數(shù)據(jù)發(fā)送服務(wù)器轉(zhuǎn)發(fā)INVITE消息;
3、流數(shù)據(jù)發(fā)送服務(wù)器發(fā)回2000K,包括擴(kuò)充字段EX,EX為是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,流數(shù)據(jù)接收客戶端可解析出該擴(kuò)充字段并根據(jù)該標(biāo)志判斷是否申請斷點(diǎn)續(xù)傳流,本實(shí)施例該標(biāo)志設(shè)為支持?jǐn)帱c(diǎn)續(xù)傳,如步驟S3 ;
4、信令服務(wù)端返回2000K,包含擴(kuò)充字段EX ;
5、流數(shù)據(jù)接收客戶端接收到支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志后,向SIP信令服務(wù)器發(fā)送MESSAGE消息,包含XML,XML定義了消息為分段請求,表示流數(shù)據(jù)接收客戶端向流數(shù)據(jù)發(fā)送服務(wù)器申請分段,如步驟S4;
6、SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器轉(zhuǎn)發(fā)MESSAGE消息,包含XML,定義了消息為分段請求;
7、流數(shù)據(jù)發(fā)送服務(wù)器返回2000K,包含XML,XML定義了流數(shù)據(jù)發(fā)送服務(wù)器根據(jù)流數(shù)據(jù)接收客戶端所申請的流數(shù)據(jù)計(jì)算出的分段信息,分段信息包含段的數(shù)量、每個(gè)段的大小、段的起始段號、每個(gè)段按MTU分配的小段,小段對應(yīng)的序號起始號等數(shù)據(jù),如步驟S5 ;
8、服務(wù)端返回2000K,包含XML,XML定義了分段信息;
9、流數(shù)據(jù)接收客戶端接收到分段信息后,根據(jù)用戶需要以及流數(shù)據(jù)接收客戶端自身設(shè)置,創(chuàng)建一接收端口,開辟相應(yīng)的接收線程,再次向信令服務(wù)發(fā)送一 MESSAGE請求,XML定義了包括命令字段、申請的分段號、序號、接收端口在內(nèi)的數(shù)據(jù),如步驟S6 ;
10、信令服務(wù)向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送MESSAGE,XML定義了包括命令字段、申請的分段號、序號、接收端口在內(nèi)的數(shù)據(jù);
11、流數(shù)據(jù)發(fā)送服務(wù)器返回2000K,表示請求已經(jīng)處理成功,如步驟S7 ;
12、信令服務(wù)返回2000K,表示請求已經(jīng)處理成功;
13、流數(shù)據(jù)接收客戶端完成接收準(zhǔn)備后,發(fā)送ACK消息給信令服務(wù),表示INVITE被最終請求,如步驟S8 ;
14、信令服務(wù)發(fā)送ACK消息給流數(shù)據(jù)發(fā)送服務(wù)器;
15、流數(shù)據(jù)接收客戶端開始按段接收數(shù)據(jù)。
[0041]16、流數(shù)據(jù)接收客戶端在每一個(gè)段內(nèi)接收到分段后,按照每段序號排序數(shù)據(jù),各個(gè)段的數(shù)據(jù)接收完成后,由專門負(fù)責(zé)模塊合并數(shù)據(jù),如步驟S9 ;
17、流數(shù)據(jù)接收客戶端完成一段數(shù)據(jù)后,重新申請新的段號數(shù)據(jù),重復(fù)5以后的過程。
[0042]18、服務(wù)接收到段號,會(huì)判斷后續(xù)是否有數(shù)據(jù),如果沒有,會(huì)暫停,直到有流數(shù)據(jù)為止。
[0043]19、當(dāng)流數(shù)據(jù)接收客戶端需要結(jié)束接收數(shù)據(jù)時(shí),向信令服務(wù)發(fā)送BYE ;
20、信令服務(wù)返回200OK ;
21、信令服務(wù)向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送BYE;
22、流數(shù)據(jù)發(fā)送服務(wù)器返回2000K,整個(gè)接收過程結(jié)束。
[0044]斷點(diǎn)續(xù)傳方法描述:
流數(shù)據(jù)接收客戶端在本地文件中記錄每個(gè)段已經(jīng)接收完成的數(shù)據(jù),包括段號、序號、數(shù)據(jù)大小等信息。
[0045]如圖2和圖4所示,當(dāng)發(fā)送網(wǎng)絡(luò)中斷或認(rèn)為中斷后,流數(shù)據(jù)接收客戶端申請重傳所對應(yīng)的斷點(diǎn)續(xù)傳流程如下:
1、流數(shù)據(jù)接收客戶端從記錄文件中讀出當(dāng)前最新接收的段號、序號、數(shù)據(jù)大小信息;
2、向信令服務(wù)發(fā)送MESSAGE,XML包含段號、序號、接收端口等數(shù)據(jù);
3、信令服務(wù)向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送MESSAGE,XML包含段號、序號等數(shù)據(jù);
4、流數(shù)據(jù)發(fā)送服務(wù)器向信令服務(wù)發(fā)送2000K;
5、信令服務(wù)向流數(shù)據(jù)接收客戶端發(fā)送2000K;
6、流數(shù)據(jù)接收客戶端做好接收準(zhǔn)備后,向信令服務(wù)發(fā)送ACK;
7、信令服務(wù)向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送ACK;
8、流數(shù)據(jù)發(fā)送服務(wù)器開始往端口上發(fā)送請求的分段的制定的序號的數(shù)據(jù)。
[0046]以上所述僅為本發(fā)明的較佳實(shí)施例,本領(lǐng)域技術(shù)人員知悉,在不脫離本發(fā)明的精神和范圍的情況下,可以對這些特征和實(shí)施例進(jìn)行各種改變或等同替換。另外,在本發(fā)明的教導(dǎo)下,可以對這些特征和實(shí)施例進(jìn)行修改以適應(yīng)具體的情況及材料而不會(huì)脫離本發(fā)明的精神和范圍。因此,本發(fā)明不受此處所公開的具體實(shí)施例的限制,所有落入本申請的權(quán)利要求范圍內(nèi)的實(shí)施例都屬于本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸方法,其特征在于,包括: 步驟S001:流數(shù)據(jù)接收客戶端通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一數(shù)據(jù)申請請求; 步驟S002:流數(shù)據(jù)發(fā)送服務(wù)器接收到所述數(shù)據(jù)申請請求后,通過SIP信令服務(wù)器向客戶端返回一第一反饋消息,所述第一反饋消息包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志; 步驟S003:若支持?jǐn)帱c(diǎn)續(xù)傳,則流數(shù)據(jù)接收客戶端通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一分段請求; 步驟S004:流數(shù)據(jù)發(fā)送服務(wù)器根據(jù)需要傳輸?shù)牧鲾?shù)據(jù)計(jì)算分段信息,進(jìn)而通過SIP信令服務(wù)器將所述分段信息發(fā)送給流數(shù)據(jù)接收客戶端; 步驟S005:流數(shù)據(jù)接收客戶端響應(yīng)所述分段信息自動(dòng)根據(jù)自身的設(shè)置和需要,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一流數(shù)據(jù)預(yù)接收信息,所述流數(shù)據(jù)預(yù)接收信息包含請求傳輸?shù)脑摱瘟鲾?shù)據(jù)所對應(yīng)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號; 步驟S006:流數(shù)據(jù)發(fā)送服務(wù)器接收到所述流數(shù)據(jù)預(yù)接收信息后,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息; 步驟S007:流數(shù)據(jù)接收客戶端接收所述確認(rèn)信息后,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送最終請求消息,表示準(zhǔn)備接收; 步驟S008:進(jìn)行該段流數(shù)據(jù)的傳輸; 在步驟S008數(shù)據(jù)傳輸過程中,若發(fā)生網(wǎng)絡(luò)中斷或者系統(tǒng)認(rèn)為中斷,流數(shù)據(jù)接收客戶端保存當(dāng)前正在傳輸?shù)牧鲾?shù)據(jù)的中斷點(diǎn)信息,所述中斷點(diǎn)信息包含被中斷傳輸?shù)牧鲾?shù)據(jù)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,網(wǎng)絡(luò)恢復(fù)時(shí)流數(shù)據(jù)接收客戶端根據(jù)從文件中讀取的所述中斷點(diǎn)信息返回步驟S005重新申請流數(shù)據(jù); 步驟S009:流數(shù)據(jù)接收客戶端接收完整的一段流數(shù)據(jù)后,重復(fù)步驟S005至S008,直至所有流數(shù)據(jù)傳輸完整為止。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S001的流數(shù)據(jù)發(fā)送服務(wù)器與SIP信令服務(wù)器 對應(yīng)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,多個(gè)流數(shù)據(jù)發(fā)送服務(wù)器對應(yīng)一個(gè)SIP信令服務(wù)器,步驟S001還包括: 步驟S11:SIP信令服務(wù)器根據(jù)配置或者動(dòng)態(tài)資源占用情況分配資源給流數(shù)據(jù)服務(wù)器;步驟S12:流數(shù)據(jù)接收客戶端發(fā)送數(shù)據(jù)申請請求時(shí),根據(jù)步驟S11分配的情況,選擇該申請請求指定的流數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述步驟S006中,流數(shù)據(jù)發(fā)送服務(wù)器接收到所述流數(shù)據(jù)預(yù)接收信息后: 流數(shù)據(jù)發(fā)送服務(wù)器判斷該段數(shù)據(jù)流是否有數(shù)據(jù); 是,則通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息; 否,則暫不做反饋,直至收到新的數(shù)據(jù)。
5.根據(jù)權(quán)利要求1或4所述的方法,其特征在于,所述步驟S005中還包含流數(shù)據(jù)接收客戶端為接收該段流數(shù)據(jù)創(chuàng)建一接收端口,開辟相應(yīng)的接收線程,所述自身的設(shè)置包含所述接收端口和接收線程,所述自身需要包含流數(shù)據(jù)接收客戶端預(yù)接收的該段流數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟S004所述分段信息包含段的數(shù)量、每個(gè)段的大小、段的起始段號、每個(gè)段按MTU分配的小段,小段對應(yīng)的所有序號。
7.一種基于SIP的斷點(diǎn)續(xù)傳的可靠數(shù)據(jù)傳輸系統(tǒng),其特征在于,包含: 流數(shù)據(jù)接收客戶端用于: 通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一數(shù)據(jù)申請請求, 根據(jù)自流數(shù)據(jù)發(fā)送服務(wù)器接收到的第一反饋消息中所包含的是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志,自動(dòng)判斷是否斷點(diǎn)續(xù)傳,是,則通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送分段請求, 響應(yīng)自流數(shù)據(jù)發(fā)送服務(wù)器接收到分段信息自動(dòng)根據(jù)自身的設(shè)置和需要,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送一流數(shù)據(jù)預(yù)接收信息,所述流數(shù)據(jù)預(yù)接收信息包含請求傳輸?shù)脑摱瘟鲾?shù)據(jù)所對應(yīng)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號, 根據(jù)自流數(shù)據(jù)發(fā)送服務(wù)器接收到的確認(rèn)信息,通過SIP信令服務(wù)器向流數(shù)據(jù)發(fā)送服務(wù)器發(fā)送最終請求消息, 若發(fā)生網(wǎng)絡(luò)中斷或者系統(tǒng)認(rèn)為中斷,保存當(dāng)前正在傳輸?shù)牧鲾?shù)據(jù)的中斷點(diǎn)信息,所述中斷點(diǎn)信息包含被中斷傳輸?shù)牧鲾?shù)據(jù)的段號、序號、流數(shù)據(jù)接收客戶端的接收端口號,網(wǎng)絡(luò)恢復(fù)時(shí)根據(jù)從文件中讀取的所述中斷點(diǎn)信息重新申請流數(shù)據(jù); 流數(shù)據(jù)發(fā)送服務(wù)器用于: 根據(jù)自流數(shù)據(jù)接收客戶端接收到的數(shù)據(jù)申請請求,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端返回第一反饋消息,所述第一反饋消息包含是否支持?jǐn)帱c(diǎn)續(xù)傳的標(biāo)志, 根據(jù)自流數(shù)據(jù)接收客戶端接收到的分段請求以及流數(shù)據(jù)接收客戶端申請的需要傳輸?shù)牧鲾?shù)據(jù)計(jì)算分段信息,進(jìn)而通過SIP信令服務(wù)器將所述分段信息發(fā)送給流數(shù)據(jù)接收客戶端, 根據(jù)自流數(shù)據(jù)接收客戶端接收到的流數(shù)據(jù)預(yù)接收信息,通過SIP信令服務(wù)器向流數(shù)據(jù)接收客戶端發(fā)送確認(rèn)信息, SIP信令服務(wù)器用于: 流數(shù)據(jù)接收客戶端和流數(shù)據(jù)發(fā)送服務(wù)器之前間的消息轉(zhuǎn)發(fā)。
【文檔編號】H04L29/08GK104320490SQ201410633882
【公開日】2015年1月28日 申請日期:2014年11月12日 優(yōu)先權(quán)日:2014年11月12日
【發(fā)明者】譚永銳, 林建銳 申請人:深圳市博康系統(tǒng)工程有限公司