專利名稱:一種基于流傳輸?shù)臅拝f(xié)議的方法
一種基于流傳輸?shù)臅拝f(xié)議的方法
技術領域:
本發(fā)明涉及網(wǎng)絡通訊技術,具體是指ー種基于流傳輸?shù)臅拝f(xié)議的方法。
背景技木跨 越不同設備,不同系統(tǒng)的通信已經(jīng)越來越顯得重要。一個可靠,簡單,不依賴于底層協(xié)議限制的通信模式,可以讓跨平臺通信的開發(fā)效率和運行效率都提升。目前,數(shù)據(jù)傳輸一般工作于TCP,UDP,或是其它協(xié)議之上,但是這些協(xié)議只提供傳輸數(shù)據(jù)基本方法,并沒有進ー步確保連接與傳輸數(shù)據(jù)的更高級API,這些都是需要針對具體領域再進行協(xié)議之上的封裝。主機間進行通信吋,常常是ー種流式的傳輸方式,如TCP/IP的TCP協(xié)議,如USB的傳輸,串ロ的傳輸,但是這些傳輸方式只供給ー個流式傳輸?shù)耐ǖ?,并沒有給我們會話與表示的框架,于是,需要在傳輸層上提供自己的會話協(xié)議,以供我們的應用層使用。抽象出自己的會話層,可以簡化應用層的開發(fā),也可以使得系統(tǒng)具有更強的可擴展能力。有鑒于此,本發(fā)明人針對現(xiàn)有技術的缺陷深入研究,并有本案產(chǎn)生。
發(fā)明內(nèi)容本發(fā)明所要解決的技術問題在于提供一種基于流傳輸?shù)臅拝f(xié)議的方法,是在傳輸層上提供自己的會話協(xié)議,以供應用層使用,這樣可以簡化應用層的開發(fā),也可以使得系統(tǒng)具有更強的可擴展能力。本發(fā)明采用以下技術方案解決上述技術問題一種基于流傳輸?shù)臅拝f(xié)議的方法,設端點A與端點B通過流式傳輸連接,端點A將把一段文字szMessage發(fā)送到端點B,包括如下步驟步驟ー端點A的應用層確定要發(fā)送的信息,把szMessage根據(jù)相應格式打包成一個信息包;信息包結(jié)構(gòu)ー個包包含5個部分,即信息頭+元數(shù)據(jù)+附加數(shù)據(jù)+數(shù)據(jù)體+信息尾;元數(shù)據(jù),包含會話ID、包ID、數(shù)據(jù)類型、數(shù)據(jù)體長度、擴展數(shù)據(jù)長度、驗證碼、編碼方式;擴展數(shù)據(jù),是ー些附加信息,或是輔助信息;數(shù)據(jù)體,是包含實質(zhì)內(nèi)容的部分,如,普通文字,文件流,視頻流;步驟ニ 端點A把信息包傳送給端點B,使用的是底層的流式傳輸發(fā)送;步驟三端點B接收到數(shù)據(jù)流;步驟四端點B按相應格式檢查數(shù)據(jù)流,確認這是ー個信息包;每個包都有包頭和包尾,確定ー個信息包必須有2個條件a、包含包頭與包尾;b、包的長度在元數(shù)據(jù)中有聲明;如果不符合以上兩條件,說明是一個壞包;收數(shù)據(jù)時,如果沒收到完整的包,則把數(shù)據(jù)放在緩沖區(qū)中;
步驟五端點B確認信息包后,提取出元數(shù)據(jù)中會話ID,建立ー個新的會話;步驟六端點B從信息包中獲得szMessage ;步驟七之后,端點A與端點B可以使用同一會話ID不斷通信,重復步驟一-步驟六;當端點A或端點B發(fā)出停止請求,或是超時,則會話中斷。所述步驟七中超時判斷為會話中斷的方法包括定時的發(fā)送心跳包,如果在一定時間內(nèi)沒有收到心跳包,則視為會話中斷。本發(fā)明的優(yōu)點在于1、可以不依賴于特定的底層傳輸協(xié)議;2、可以對于消息的成功與連接的斷開有自動的通知;3、可以傳輸多種類型數(shù)據(jù);4、適用于多種平臺,與操作系統(tǒng)編程語言無關。
下面參照附圖結(jié)合實施例對本發(fā)明作進ー步的描述。圖I是本發(fā)明流程圖。
圖2是本發(fā)明中信息包結(jié)構(gòu)圖。
具體實施方式如圖I所示,一種基于流傳輸?shù)臅拝f(xié)議的方法,設端點A與端點B通過流式傳輸連接,端點A將把一段文字szMessage發(fā)送到端點B,包括如下步驟步驟ー端點A的應用層確定要發(fā)送的信息,把szMessage根據(jù)相應格式打包成一個信息包;信息包結(jié)構(gòu)如下表所示,ー個包包含5個部分,即信息頭+元數(shù)據(jù)+附加數(shù)據(jù)+數(shù)據(jù)體+信息尾;元數(shù)據(jù),包含會話ID、包ID、數(shù)據(jù)類型、數(shù)據(jù)體長度、擴展數(shù)據(jù)長度、驗證碼、編碼方式;擴展數(shù)據(jù),一般情況下,數(shù)據(jù)體中才是接收方真正想要的東西,擴展數(shù)據(jù)是ー些附加信息,或是輔助信息;比如傳輸ー個文件,數(shù)據(jù)體中是文件的內(nèi)容,而擴展數(shù)據(jù)則包含文件的名字,長度,大小之類的信息;數(shù)據(jù)體,是包含實質(zhì)內(nèi)容的部分,如,普通文字,文件流,視頻流;信息包的分類是無限種的,根據(jù)應用層來做自定義。但是可以默認使用如下幾種命令包傳輸控制,如,告知對方關閉連接,或是其它擴展命令;文本包純文本,可以根據(jù)元數(shù)據(jù)的編碼方式來編解碼;文件包文件,可以是分段的文件;原始流包視頻流或是音頻流等原始的流;心跳包告知連接處于正常狀態(tài);確認包告知消息已經(jīng)被成功接收;一個發(fā)送文字例子,如發(fā)送hello<<<<<text氺氺氺氺氺氺5氺氺氺氺氺氺氺氺氺O氺氺氺氺氺氺氺氺氺utf8******xxxxxxxxxxhello>>>>>
一個發(fā)送文件的例子,如文件內(nèi)容為content<<<<<file氺氺氺氺氺氺7氺氺氺氺氺氺氺氺氺= tes
t. txtcontent>^>>>步驟ニ 端點A調(diào)用會話層的發(fā)送命令,把信息包傳送給端點B,使用的是底層的流式傳輸發(fā)送; 步驟三端點B的會話層接收到數(shù)據(jù)流;步驟四端點B按相應格式檢查數(shù)據(jù)流,確認這是ー個信息包;每個包都有包頭和包尾,確定ー個信息包必須有2個條件a、包含包頭與包尾;b、包的長度在元數(shù)據(jù)中有聲明;如果不符合以上兩條件,說明是一個壞包;收數(shù)據(jù)時,如果沒收到完整的包,則把數(shù)據(jù)放在緩沖區(qū)中;步驟五端點B確認信息包后,提取出元數(shù)據(jù)中會話ID,建立ー個新的會話;步驟六端點B把被解析的信息傳給端點B的應用層,端點B從信息包中獲得szMessage ;步驟七之后,端點A與端點B可以使用同一會話ID不斷通信,重復步驟一-步驟六;當端點A或端點B發(fā)出停止請求,或是超時,則會話中斷。確定ー個連接被斷開的方式為定時的發(fā)送心跳包,如果在一定時間內(nèi)沒有收到心跳包,則視為連接被斷開了,可能是軟件,也可能是硬件的原因,這是同類系統(tǒng)中常用的
解決方案。當端點A與端點B因為軟件或是硬件原因,在超時時間內(nèi)TCP連接斷開了,但是,只要重新建立TCP連接,使用同一個會話ID,那就還是在同一個會話過程內(nèi)。本發(fā)明中,只要有開始傳輸數(shù)據(jù),會話就建立了 ;每ー個數(shù)據(jù)包中都必須包含會話ID ;只要收到的包的會話ID是同一個,那么這些包都屬于同一個會話;如,一個TCP連接,可以有多個會話,多個TCP連接,可能都屬于一個會話;會話的確定使用ー個唯一 ID,傳輸數(shù)據(jù)包時,每個包都必須包含會話ID ;在同一個TCP連接內(nèi),可以使用不同的會話ID,以表示不同的會話過程。同一個TCP連接內(nèi),不同的話會話ID,可以不按順序,如,五次消息傳輸,可以分別是,會話1,會話2,會話1,會話3,會話1,因此,會話連接與底層的物理或是軟件的連接是不相關的。保證收到一個完整的包每個包都有包頭與包尾,確定ー個包必須有2個條件;I、包含包頭與包尾;2、包的長度在無數(shù)據(jù)中有聲明,如果不符合,說明是一個壞包;收數(shù)據(jù)時,如果沒收到完整的包,則把數(shù)據(jù)放在緩沖區(qū)中;本發(fā)明中,應用層與會話層的通信,基于事件通知的模式;如當新會話開始的時候、當一個完整的包被解析的時候,這時候,會有發(fā)送成功,或是接收成功的通知、當對方無響應時、當異常發(fā)生時,當這些事件發(fā)生后,傳輸給應用層的是更加具體的信息,而不是信息包。本發(fā)明會話協(xié)議的方法所依賴的底層條件,必須是基于ー種流式底層傳輸通道,如USB的傳輸,串ロ的傳輸,TCP/IP的TCP傳輸模式;數(shù)據(jù)傳輸?shù)幕緟g位是基于字節(jié)流的數(shù)據(jù)包,每個包有會話ID,包ID,以及其它組成部分,包的大小不是固定的,ー個包可以分多次傳輸,一次接收的內(nèi)容也可能是多個包。
對包的信息結(jié)構(gòu)可以進行擴展首先,包的長度是可以擴展的,一個包有定長部分,也有不定長部分(擴展區(qū))在元數(shù)據(jù)中有聲明擴展區(qū)的大??;包的發(fā)送信息的命令與內(nèi)容,完全是根據(jù)應用層來進行自定義處理的。本發(fā)明具有如下有益效果1、可以不依賴于特定的底層傳輸協(xié)議;2、可以對于消息的成功與連接的斷開有自動的通知;3、可以傳輸多種類型數(shù)據(jù);4、適用于多種平臺,與操作系統(tǒng)編程語言無關。 以上所述僅為本發(fā)明的較佳實施用例而已,并非用于限定本發(fā)明的保護范圖。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種基于流傳輸?shù)臅拝f(xié)議的方法,設端點A與端點B通過流式傳輸連接,端點A將把一段文字szMessage發(fā)送到端點B,包括如下步驟 步驟一端點A的應用層確定要發(fā)送的信息,把szMessage根據(jù)相應格式打包成一個信息包; 信息包結(jié)構(gòu)一個包包含5個部分,即信息頭+元數(shù)據(jù)+附加數(shù)據(jù)+數(shù)據(jù)體+信息尾; 元數(shù)據(jù),包含會話ID、包ID、數(shù)據(jù)類型、數(shù)據(jù)體長度、擴展數(shù)據(jù)長度、驗證碼、編碼方式; 擴展數(shù)據(jù),是一些附加信息,或是輔助信息; 數(shù)據(jù)體,是包含實質(zhì)內(nèi)容的部分; 步驟二 端點A把信息包傳送給端點B,使用的是底層的流式傳輸發(fā)送; 步驟三端點B接收到數(shù)據(jù)流; 步驟四端點B按相應格式檢查數(shù)據(jù)流,確認這是一個信息包;每個包都有包頭和包尾,確定一個信息包必須有2個條件a、包含包頭與包尾;b、包的長度在元數(shù)據(jù)中有聲明;如果不符合以上兩條件,說明是一個壞包;收數(shù)據(jù)時,如果沒收到完整的包,則把數(shù)據(jù)放在緩沖區(qū)中; 步驟五端點B確認信息包后,提取出元數(shù)據(jù)中會話ID,建立一個新的會話; 步驟六端點B從信息包中獲得szMessage ; 步驟七之后,端點A與端點B可以使用同一會話ID不斷通信,重復步驟一-步驟六;當端點A或端點B發(fā)出停止請求,或是超時,則會話中斷。
2.如權利要求I所述的一種基于流傳輸?shù)臅拝f(xié)議的方法,其特征在于所述步驟七中超時判斷為會話中斷的方法包括定時的發(fā)送心跳包,如果在一定時間內(nèi)沒有收到心跳包,則視為會話中斷。
全文摘要
一種基于流傳輸?shù)臅拝f(xié)議的方法,設端點A與端點B通過流式傳輸連接,端點A將把一段文字發(fā)送到端點B,包括如下步驟端點A的應用層確定要發(fā)送的信息;端點A調(diào)用會話層的發(fā)送命令,這期間,要經(jīng)過信息的打包;被打包好的信息包,經(jīng)過傳輸層傳到端點B;端點B的會話層接收到信息包;端點B解析信息包;端點B把被解析的信息傳給端點B的應用層,還原信息。本發(fā)明是在傳輸層上提供自己的會話協(xié)議,以供應用層使用,這樣可以簡化應用層的開發(fā),也可以使得系統(tǒng)具有更強的可擴展能力。
文檔編號H04L29/06GK102664868SQ201210072160
公開日2012年9月12日 申請日期2012年3月16日 優(yōu)先權日2012年3月16日
發(fā)明者張維 申請人:福州瑞芯微電子有限公司