專利名稱:一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)及方法,屬于無線通信領(lǐng)域。
背景技術(shù):
如圖I所示的網(wǎng)絡(luò)中,客戶端主機(jī)只能訪問代理服務(wù)器的特定端口,并且不能直接訪問外部網(wǎng)絡(luò),但要實(shí)現(xiàn)從客戶端建立到外部網(wǎng)絡(luò)的服務(wù)TCP連接常用的代理協(xié)議包括HTTP代理和socks代理,前者只能服務(wù)于基于HTTP協(xié)議的應(yīng)用,相對于HTTP代理socks協(xié)議運(yùn)行在底層中,socks協(xié)議中,客戶端使用握手協(xié)議告知代理服務(wù)器想要建立的連接信息以及使用哪種協(xié)議(TCP/UDP )。
socks的工作過程客戶端A想要通過internet與客戶端B進(jìn)行通訊,但他們之間有防火墻,客戶端A自己并沒有獲得建立這個連接的授權(quán)。所以客戶端A先連接到一個可以連接到客戶端B的socks代理服務(wù)器,并告訴代理他想要建立與客戶端B的連接,同時發(fā)送socks協(xié)議頭,告知客戶端B的地址和端口號,然后socks代理服務(wù)器自己通過防火墻建立到客戶端B的連接,之后在客戶端A和客戶端B之間進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。但使用socks代理的前提是客戶端軟件需要對該協(xié)議的支持,而實(shí)際上現(xiàn)在的大多數(shù)常用軟件并不支持,因此,我們需要一個中間層來完成這種協(xié)議的轉(zhuǎn)換。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種無需客戶端軟件支持而使用socket連接的數(shù)據(jù)傳輸方法及系統(tǒng)。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下一種基于socket連接的數(shù)據(jù)傳輸方法,具體步驟如下步驟I :在本地代理服務(wù)器中建立一個本地代理端口列表,每個本地代理端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址;在遠(yuǎn)程代理服務(wù)器中設(shè)置一個遠(yuǎn)程代理端口 ;步驟2 :本地代理服務(wù)器實(shí)時監(jiān)聽所有本地代理端口 ;步驟3 :判斷是否有本地代理端口接收到來自本地客戶端的連接請求,如果有,進(jìn)入步驟4,否則返回步驟2 ;步驟4 :本地客戶端與被請求連接的本地代理端口建立連接LI ;步驟5 :在本地代理端口列表中查找被請求連接的本地代理端口對應(yīng)的遠(yuǎn)程服務(wù)端的地址;步驟6 :遠(yuǎn)程代理服務(wù)器實(shí)時監(jiān)聽遠(yuǎn)程代理端口 ;步驟7 :判斷遠(yuǎn)程代理端口是否接收到來自本地代理服務(wù)器的連接請求,如果有,進(jìn)入步驟8,否則返回步驟6 ;步驟8 :本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器的代理端口建立連接L2,并與遠(yuǎn)程代理服務(wù)器握手并告知要連接的遠(yuǎn)程服務(wù)端的地址Al ;
步驟9 :遠(yuǎn)程代理服務(wù)器根據(jù)獲得的遠(yuǎn)程服務(wù)端的地址Al與相應(yīng)的遠(yuǎn)程服務(wù)端建立連接L3 ;步驟10 :本地客戶端與遠(yuǎn)程服務(wù)端之間通過連接LI、L2、L3進(jìn)行數(shù)據(jù)傳輸。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。進(jìn)一步,所述所述步驟10中進(jìn)行數(shù)據(jù)傳輸?shù)木唧w步驟如下步驟10. I :所述本地客戶端和遠(yuǎn)程服務(wù)端發(fā)送和接收數(shù)據(jù);步驟10. 2 :所述本地代理服務(wù)器檢測連接LI、L2上的可讀狀態(tài),遠(yuǎn)程代理服務(wù)器檢測連接L2、L3的可讀狀態(tài);步驟10. 3 :當(dāng)本地代理服務(wù)器和遠(yuǎn)程代理服務(wù)器檢測到任何一條與之相連的連接為可讀時,讀取該連接上的數(shù)據(jù)并寫入到與之相連的另一條連接上;步驟10. 4 :檢測讀寫過程中是否存在異常,如果存在則斷開并清理連接,終止本次代理通訊;否則清理緩存,并返回步驟10. 2。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng),包括本地客戶端、本地代理服務(wù)器、遠(yuǎn)程代理服務(wù)器和遠(yuǎn)程服務(wù)端;所述本地代理服務(wù)器與本地客戶端相連,所述遠(yuǎn)程代理服務(wù)器與本地代理服務(wù)器相連,所述遠(yuǎn)程服務(wù)端與遠(yuǎn)程代理服務(wù)器相連;所述本地客戶端用于向本地代理服務(wù)器發(fā)送數(shù)據(jù)和接收本地代理服務(wù)器傳來的數(shù)據(jù);所述本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器用于在本地客戶端與遠(yuǎn)程服務(wù)端之間建立連接鏈路和進(jìn)行數(shù)據(jù)傳輸;所述遠(yuǎn)程服務(wù)端用于向遠(yuǎn)程代理服務(wù)器發(fā)送數(shù)據(jù)和接收遠(yuǎn)程代理服務(wù)器傳來的數(shù)據(jù)。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。進(jìn)一步,所述本地代理服務(wù)器中設(shè)有一個本地代理端口列表,每個本地代理端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址;在遠(yuǎn)程代理服務(wù)器中設(shè)置一個的遠(yuǎn)程代理端口。進(jìn)一步,所述本地代理端口列表用于查找本地端口相對應(yīng)的遠(yuǎn)程服務(wù)端的地址。本發(fā)明的有益效果是本發(fā)明所述一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)及方法可以部分?jǐn)[脫本地防火墻的限制,獲得更多的外部網(wǎng)絡(luò)訪問可能;且實(shí)現(xiàn)邏輯簡單,成本低廉;代理服務(wù)器使用資源少,部署簡單;本地代理服務(wù)器中的每個本地端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址,本地客戶端僅需與本地代理服務(wù)器的一個本地端口連接,通過查找本地端口列表找到本地客戶端要連接的遠(yuǎn)程服務(wù)端的地址,進(jìn)而本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器建立連接,并告知要連接的遠(yuǎn)程服務(wù)端的地址,遠(yuǎn)程代理服務(wù)器與相應(yīng)的遠(yuǎn)程服務(wù)端建立連接,之后本地客戶端和遠(yuǎn)程服務(wù)端之間即可進(jìn)行數(shù)據(jù)傳輸,因此本地客戶端無需具有對代理協(xié)議的支持,具有更大的靈活性和適應(yīng)性。
圖I為客戶端與外部網(wǎng)絡(luò)通信的結(jié)構(gòu)框圖;圖2為本發(fā)明所述一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)及其內(nèi)部通信的示意圖3為對應(yīng)于圖2的方法流程圖;圖4為所述步驟10中進(jìn)行數(shù)據(jù)傳輸?shù)牧鞒虉D。圖5為本發(fā)明所述一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)框圖。
具體實(shí)施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。socket又名Berkeley套接字接口,一個應(yīng)用程序接口(API),使用一個Internet套接字的概念,使主機(jī)間或者一臺計算機(jī)上的進(jìn)程間可以通訊。它可以在很多不同的輸入/輸出設(shè)備和驅(qū)動之上運(yùn)行,盡管這有賴于操作系統(tǒng)的具體實(shí)現(xiàn)。接口實(shí)現(xiàn)用于TCP/IP協(xié)議,因此它是維持Internet的基本技術(shù)之一。
圖2為本發(fā)明所述一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)及其內(nèi)部通信的示意圖,圖3為對應(yīng)于圖2的方法流程圖;如圖2、圖3所示,一種基于socket連接的數(shù)據(jù)傳輸方法,具體步驟如下步驟I :在本地代理服務(wù)器中建立一個本地代理端口列表,每個本地代理端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址;在遠(yuǎn)程代理服務(wù)器中設(shè)置一個遠(yuǎn)程代理端口 ;步驟2 :本地代理服務(wù)器實(shí)時監(jiān)聽所有本地代理端口 ;步驟3 :判斷是否有本地代理端口接收到來自本地客戶端的連接請求,如果有,進(jìn)入步驟4,否則返回步驟2 ;步驟4 :本地客戶端與被請求連接的本地代理端口建立連接LI ;步驟5 :在本地代理端口列表中查找被請求連接的本地代理端口對應(yīng)的遠(yuǎn)程服務(wù)端的地址;步驟6 :遠(yuǎn)程代理服務(wù)器實(shí)時監(jiān)聽遠(yuǎn)程代理端口 ;步驟7 :判斷遠(yuǎn)程代理端口是否接收到來自本地代理服務(wù)器的連接請求,如果有,進(jìn)入步驟8,否則返回步驟6 ;步驟8 :本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器的代理端口建立連接L2,并與遠(yuǎn)程代理服務(wù)器握手并告知要連接的遠(yuǎn)程服務(wù)端的地址Al ;步驟9 :遠(yuǎn)程代理服務(wù)器根據(jù)獲得的遠(yuǎn)程服務(wù)端的地址Al與相應(yīng)的遠(yuǎn)程服務(wù)端建立連接L3 ;步驟10 :本地客戶端與遠(yuǎn)程服務(wù)端之間通過連接LI、L2、L3進(jìn)行數(shù)據(jù)傳輸。圖4為所述步驟10中進(jìn)行數(shù)據(jù)傳輸?shù)牧鞒虉D,所述所述步驟10中進(jìn)行數(shù)據(jù)傳輸?shù)木唧w步驟如下步驟10. I :所述本地客戶端和遠(yuǎn)程服務(wù)端發(fā)送和接收數(shù)據(jù);步驟10. 2 :所述本地代理服務(wù)器檢測連接LI、L2上的可讀狀態(tài),遠(yuǎn)程代理服務(wù)器檢測連接L2、L3的可讀狀態(tài);步驟10. 3 :當(dāng)本地代理服務(wù)器和遠(yuǎn)程代理服務(wù)器檢測到任何一條與之相連的連接為可讀時,讀取該連接上的數(shù)據(jù)并寫入到與之相連的另一條連接上;步驟10. 4 :檢測讀寫過程中是否存在異常,如果存在則斷開并清理連接,終止本次代理通訊;否則清理緩存,并返回步驟10. 2。
其中所述步驟10. 3具體實(shí)現(xiàn)為當(dāng)本地代理服務(wù)器檢測到連接LI為可讀時,讀取連接LI上的數(shù)據(jù),寫入到與本地代理服務(wù)器相連的另一條連接L2上;當(dāng)本地代理服務(wù)器檢測到連接L2為可讀時,讀取連接L2上的數(shù)據(jù),寫入到LI上;同時,當(dāng)遠(yuǎn)程代理服務(wù)器檢測到連接L2為可讀時,讀取連接L2上的數(shù)據(jù),寫入到與遠(yuǎn)程代理服務(wù)器相連的另一條連接L3 上;當(dāng)遠(yuǎn)程代理服務(wù)器檢測到連接L3為可讀時,讀取連接L3上的數(shù)據(jù),寫入到連接L2上。
如圖5所述,用于實(shí)現(xiàn)一種基于socket連接的數(shù)據(jù)傳輸方式的系統(tǒng),包括本地客戶端、本地代理服務(wù)器、遠(yuǎn)程代理服務(wù)器和遠(yuǎn)程服務(wù)端;
所述本地代理服務(wù)器與本地客戶端相連,所述遠(yuǎn)程代理服務(wù)器與本地代理服務(wù)器相連,所述遠(yuǎn)程服務(wù)端與遠(yuǎn)程代理服務(wù)器相連;
所述本地客戶端用于向本地代理服務(wù)器發(fā)送數(shù)據(jù)和接收本地代理服務(wù)器傳來的數(shù)據(jù);
所述本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器用于在本地客戶端與遠(yuǎn)程服務(wù)端之間建立連接鏈路和進(jìn)行數(shù)據(jù)傳輸;
所述遠(yuǎn)程服務(wù)端用于向遠(yuǎn)程代理服務(wù)器發(fā)送數(shù)據(jù)和接收遠(yuǎn)程代理服務(wù)器傳來的數(shù)據(jù)。
其中,所述本地代理服務(wù)器中設(shè)有一個本地代理端口列表,每個本地代理端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址;在遠(yuǎn)程代理服務(wù)器中設(shè)置一個遠(yuǎn)程代理端口。
其中,所述本地代理端口列表用于查找本地端口相對應(yīng)的遠(yuǎn)程服務(wù)端的地址。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于socket連接的數(shù)據(jù)傳輸方法,其特征在于,具體步驟如下步驟I :在本地代理服務(wù)器中建立一個本地代理端口列表,每個本地代理端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址;在遠(yuǎn)程代理服務(wù)器中設(shè)置一個遠(yuǎn)程代理端口 ; 步驟2 :本地代理服務(wù)器實(shí)時監(jiān)聽所有本地代理端口 ;步驟3 :判斷是否有本地代理端口接收到來自本地客戶端的連接請求,如果有,進(jìn)入步驟4,否則返回步驟2 ;步驟4 :本地客戶端與被請求連接的本地代理端口建立連接LI ;步驟5 :在本地代理端口列表中查找被請求連接的本地代理端口對應(yīng)的遠(yuǎn)程服務(wù)端的地址;步驟6 :遠(yuǎn)程代理服務(wù)器實(shí)時監(jiān)聽遠(yuǎn)程代理端口 ;步驟7 :判斷遠(yuǎn)程代理端口是否接收到來自本地代理服務(wù)器的連接請求,如果有,進(jìn)入步驟8,否則返回步驟6 ;步驟8 :本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器的代理端口建立連接L2,并與遠(yuǎn)程代理服務(wù)器握手并告知要連接的遠(yuǎn)程服務(wù)端的地址Al ;步驟9 :遠(yuǎn)程代理服務(wù)器根據(jù)獲得的遠(yuǎn)程服務(wù)端的地址Al與相應(yīng)的遠(yuǎn)程服務(wù)端建立連接L3 ;步驟10 :本地客戶端與遠(yuǎn)程服務(wù)端之間通過連接LI、L2、L3進(jìn)行數(shù)據(jù)傳輸。
2.根據(jù)權(quán)利要求I所述一種基于socket連接的數(shù)據(jù)傳輸方法,其特征在于,所述步驟 10中進(jìn)行數(shù)據(jù)傳輸?shù)木唧w步驟如下步驟10.1:所述本地客戶端和遠(yuǎn)程服務(wù)端發(fā)送和接收數(shù)據(jù);步驟10. 2 :所述本地代理服務(wù)器檢測連接LI、L2上的可讀狀態(tài),遠(yuǎn)程代理服務(wù)器檢測連接L2、L3的可讀狀態(tài);步驟10. 3 :當(dāng)本地代理服務(wù)器和遠(yuǎn)程代理服務(wù)器檢測到任何一條與之相連的連接為可讀時,讀取該連接上的數(shù)據(jù)并寫入到與之相連的另一條連接上;步驟10.4 :檢測讀寫過程中是否存在異常,如果存在則斷開并清理連接,終止本次代理通訊;否則清理緩存,并返回步驟10. 2。
3.一種實(shí)現(xiàn)權(quán)利要求I所述基于socket連接的數(shù)據(jù)傳輸方法的系統(tǒng),其特征在于,包括本地客戶端、本地代理服務(wù)器、遠(yuǎn)程代理服務(wù)器和遠(yuǎn)程服務(wù)端;所述本地代理服務(wù)器與本地客戶端相連,所述遠(yuǎn)程代理服務(wù)器與本地代理服務(wù)器相連,所述遠(yuǎn)程服務(wù)端與遠(yuǎn)程代理服務(wù)器相連;所述本地客戶端用于向本地代理服務(wù)器發(fā)送數(shù)據(jù)和接收本地代理服務(wù)器傳來的數(shù)據(jù);所述本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器用于在本地客戶端與遠(yuǎn)程服務(wù)端之間建立連接鏈路和進(jìn)行數(shù)據(jù)傳輸;所述遠(yuǎn)程服務(wù)端用于向遠(yuǎn)程代理服務(wù)器發(fā)送數(shù)據(jù)和接收遠(yuǎn)程代理服務(wù)器傳來的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述一種實(shí)現(xiàn)權(quán)利要求I所述基于socket連接的數(shù)據(jù)傳輸方法的系統(tǒng),其特征在于,所述本地代理服務(wù)器中設(shè)有一個本地代理端口列表,每個本地代理端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址;在遠(yuǎn)程代理服務(wù)器中設(shè)置一個的遠(yuǎn)程代理端口。
5.根據(jù)權(quán)利要求4所述一種實(shí)現(xiàn)權(quán)利要求I所述基于socket連接的數(shù)據(jù)傳輸方法的系 統(tǒng),其特征在于,所述本地代理端口列表用于查找本地端口相對應(yīng)的遠(yuǎn)程服務(wù)端的地址。
全文摘要
本發(fā)明涉及一種基于socket連接的數(shù)據(jù)傳輸系統(tǒng)及方法,包括本地客戶端、本地代理服務(wù)器、遠(yuǎn)程代理服務(wù)器和遠(yuǎn)程服務(wù)端;本地代理服務(wù)器中設(shè)有一個本地代理端口列表,每個本地端口對應(yīng)一個遠(yuǎn)程服務(wù)端的地址,本地客戶端僅需與本地代理服務(wù)器的一個本地端口連接,通過查找本地端口列表找到本地客戶端要連接的遠(yuǎn)程服務(wù)端的地址,進(jìn)而本地代理服務(wù)器與遠(yuǎn)程代理服務(wù)器建立連接,并告知要連接的遠(yuǎn)程服務(wù)端的地址,遠(yuǎn)程代理服務(wù)器與相應(yīng)的遠(yuǎn)程服務(wù)端建立連接,之后本地客戶端和遠(yuǎn)程服務(wù)端之間即可進(jìn)行數(shù)據(jù)傳輸;因此本地客戶端無需具有對代理協(xié)議的支持,具有更大的靈活性和適應(yīng)性;代理服務(wù)器使用資源少,部署簡單;本發(fā)明實(shí)現(xiàn)邏輯簡單,成本低廉。
文檔編號H04L29/12GK102984237SQ20121047294
公開日2013年3月20日 申請日期2012年11月20日 優(yōu)先權(quán)日2012年11月20日
發(fā)明者官元峰 申請人:北京思特奇信息技術(shù)股份有限公司