[發(fā)明專利]一種基于TCP長連接的提高數(shù)據(jù)傳輸效率的方法有效
| 申請?zhí)枺?/td> | 201210465303.1 | 申請日: | 2012-11-19 |
| 公開(公告)號: | CN102957627A | 公開(公告)日: | 2013-03-06 |
| 發(fā)明(設(shè)計(jì))人: | 王倩;張?jiān)诶?/a> | 申請(專利權(quán))人: | 浪潮電子信息產(chǎn)業(yè)股份有限公司 |
| 主分類號: | H04L12/861 | 分類號: | H04L12/861;H04L1/18;H04L29/06 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 250014 山東*** | 國省代碼: | 山東;37 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 tcp 連接 提高 數(shù)據(jù)傳輸 效率 方法 | ||
1.一種基于TCP長連接的提高數(shù)據(jù)傳輸效率的方法,其特征在于:客戶端和服務(wù)端之間采用TCP長連接進(jìn)行數(shù)據(jù)通信,客戶端和服務(wù)端的接收和處理采用異步方式并行處理,通信數(shù)據(jù)包采用編號機(jī)制保證數(shù)據(jù)可靠性和處理一致性,通過心跳檢測和失效重連機(jī)制保證通信可靠性,使用連接池提高并行傳輸效率,通過客戶端和服務(wù)端對多隊(duì)列,多線程的處理,提高數(shù)據(jù)處理的并行性,提高處理效率;包括如下內(nèi)容:
(1)客戶端和服務(wù)端是人為指定;節(jié)點(diǎn)間或各為客戶端和服務(wù)端;節(jié)點(diǎn)間或互為客戶端和服務(wù)端;
(2)客戶端包括以下線程:
1)發(fā)送線程,負(fù)責(zé)執(zhí)行發(fā)送動(dòng)作
2)接收線程,負(fù)責(zé)執(zhí)行接收動(dòng)作
3)發(fā)送包處理線程,負(fù)責(zé)將請求轉(zhuǎn)化為通信包,加入待發(fā)送隊(duì)列
4)接收包處理線程,負(fù)責(zé)處理已返回的請求
5)連接線程,負(fù)責(zé)與服務(wù)端的心跳檢測與失效重連
6)超時(shí)掃描線程,負(fù)責(zé)檢測命令超時(shí)和重發(fā)處理
(3)客戶端包括以下隊(duì)列:
1)新任務(wù)隊(duì)列,存放新收到的請求;
2)待發(fā)送包隊(duì)列,存放即將被發(fā)送的通信包;
3)已接收包隊(duì)列,存放收到的通信包;
4)待完成任務(wù)隊(duì)列,新任務(wù)被發(fā)送后,存放在該隊(duì)列中,等待任務(wù)完成后,從該隊(duì)列中刪除;
(4)服務(wù)端包括以下線程:
1)接收線程,負(fù)責(zé)從客戶端接收通信包;
2)發(fā)送線程,負(fù)責(zé)將通信包發(fā)送到客戶端;
3)接收包處理線程,負(fù)責(zé)將接收到的通信包包轉(zhuǎn)化為請求;
4)發(fā)送包處理線程,負(fù)責(zé)將恢復(fù)轉(zhuǎn)化為即將發(fā)送的通信包;
5)工作線程,負(fù)責(zé)實(shí)際的處理工作,允許有多個(gè)工作線程;
(5)服務(wù)端包括以下隊(duì)列:
1)接收包隊(duì)列,存放收到的通信包;
2)未完成請求隊(duì)列,存放還未進(jìn)行的處理的請求;
3)已完成請求隊(duì)列,存放經(jīng)過工作線程處理完成的請求;
4)發(fā)送包隊(duì)列,存放要發(fā)送的通信包;
(6)包編號機(jī)制包括:
1)客戶端向同一個(gè)服務(wù)端發(fā)送的命令是編號的,服務(wù)端根據(jù)包的編號來判斷是同一個(gè)命令的包;
2)由于一條命令包含多個(gè)通信包,只有接收到的包的數(shù)量達(dá)到該命令的包個(gè)數(shù)時(shí),該命令才接收完整;
3)每一個(gè)數(shù)據(jù)包都對應(yīng)一個(gè)索引,代表該數(shù)據(jù)包在相應(yīng)命令所有數(shù)據(jù)包中的序號;
(7)心跳檢測和失效重連機(jī)制包括:
1)定時(shí)檢測連接是否暢通;
2)發(fā)現(xiàn)連接失效時(shí)進(jìn)行重連;
3)對于超時(shí)命令進(jìn)行重發(fā);
4)重發(fā)次數(shù)達(dá)到上限的命令,返回處理失敗;
(8)使用連接池包括:
1)客戶端和通信端可以有多個(gè)TCP長連接,組成連接池;
2)客戶端和服務(wù)端進(jìn)行發(fā)送和接收時(shí),從連接池中選擇連接;
(9)客戶端和服務(wù)端處理流程如下:
1)其他模塊通過“內(nèi)部命令”的方式向本模塊提交命令,在客戶端,該命令被加入到新任務(wù)隊(duì)列;
2)客戶端的命令轉(zhuǎn)換處理線程,從新任務(wù)隊(duì)列中取出一個(gè)新的命令,轉(zhuǎn)換為發(fā)送包后,從連接池中選擇一個(gè)連接,將發(fā)送包加入到連接的待發(fā)送包隊(duì)列,并將該命令從新任務(wù)隊(duì)列移到待完成任務(wù)隊(duì)列中;
3)客戶端的發(fā)送線程從連接的待發(fā)送包隊(duì)列中取出待發(fā)送的包,發(fā)送到服務(wù)端;
4)服務(wù)端接收線程接收包,通過轉(zhuǎn)換處理線程將包轉(zhuǎn)換為新請求加入新請求隊(duì)列;
5)判斷服務(wù)端是否接收了一個(gè)新請求的所有包,若是,將該請求從新請求隊(duì)列中移至待處理請求隊(duì)列;
6)服務(wù)端工作線程從待處理請求隊(duì)列中獲取一個(gè)請求并執(zhí)行,完成后將該請求從待處理請求隊(duì)列移至已完成請求隊(duì)列;
7)服務(wù)端發(fā)送處理線程從已完成請求隊(duì)列中取出一個(gè)已完成請求,轉(zhuǎn)換為發(fā)送包,加入待發(fā)送包隊(duì)列;
8)服務(wù)端發(fā)送線程遍歷各連接,從待發(fā)送包隊(duì)列中取出通信包,發(fā)送;
9)客戶端接收線程接收通信包,返回包處理線程將通信包加入已接收包隊(duì)列中;
10)命令對應(yīng)的通信包全部接收完成后,從待完成隊(duì)列中找到該請求,并刪除。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于浪潮電子信息產(chǎn)業(yè)股份有限公司,未經(jīng)浪潮電子信息產(chǎn)業(yè)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210465303.1/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 具有傳輸控制協(xié)議匯聚模塊的傳輸控制協(xié)議主機(jī)
- 一種分發(fā)傳輸TCP數(shù)據(jù)包的方法及裝置
- 一種TCP報(bào)文的發(fā)送方法、接收方法及裝置
- 一種無縫重建TCP連接的系統(tǒng)及方法
- 一種機(jī)載網(wǎng)絡(luò)服務(wù)的TCP連接處理方法
- 一種實(shí)現(xiàn)傳輸控制協(xié)議TCP傳輸?shù)姆椒把b置
- 移動(dòng)終端跨區(qū)保持MEC邊緣TCP業(yè)務(wù)服務(wù)方法及系統(tǒng)
- 一種TCP熱備份的方法和裝置
- TCP報(bào)文的負(fù)載均衡方法及裝置
- 加密TCP流量采集方法與裝置





