本發(fā)明涉及通信領(lǐng)域,特別是涉及一種數(shù)據(jù)傳輸方法。
背景技術(shù):
:目前,終端間通訊協(xié)議多采用HTTP(Hypertexttransferprotocol,超文本傳輸協(xié)議)、HTTPS(HypertextTransferProtocoloverSecureSocketLayer,以安全為目標(biāo)的HTTP通道)、CoAP(ConstrainedApplicationProtocol,受限制的應(yīng)用協(xié)議)、TFTP(TrivialFileTransferProtocol,簡單文件傳輸協(xié)議)等。它們都是基于TCP/IP協(xié)議(TransmissionControlProtocol/InternetProtocol的簡寫,中文譯名為傳輸控制協(xié)議/網(wǎng)際協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議)族衍生出來的通訊協(xié)議,HTTP是以三次握手的成功進(jìn)行數(shù)據(jù)傳輸,同樣的,HTTPS只把HTTP明文傳輸方式改為密文傳輸方式;COAP一般采用UDP(UserDatagramProtocol的簡稱,中文名是用戶數(shù)據(jù)包協(xié)議)的形式傳遞數(shù)據(jù),協(xié)議非常小,最小的數(shù)據(jù)包只有4bytes,低功耗的同時(shí),數(shù)據(jù)傳輸效率低;TFTP也僅為較微型終端的文件傳輸而設(shè)計(jì)。隨著日新月異的物聯(lián)網(wǎng)技術(shù),終端間也需遠(yuǎn)程通訊能力。因此,若終端用以上協(xié)議進(jìn)行遠(yuǎn)程通訊,將十分依賴后臺(tái)服務(wù)器作為信息中轉(zhuǎn)站,無疑增加了設(shè)計(jì)成本和開發(fā)難度,也就使得物聯(lián)網(wǎng)的遠(yuǎn)程通訊具有一定的局限性。技術(shù)實(shí)現(xiàn)要素:基于此,有必要提供一種數(shù)據(jù)傳輸方法,其在服務(wù)器上注冊(cè)后,在不同的局域網(wǎng)內(nèi)的終端可以進(jìn)行通信,而不需要依賴服務(wù)器作為信息中轉(zhuǎn)站。一種數(shù)據(jù)傳輸方法,所述方法包括:接入第一局域網(wǎng)以獲取自身的外網(wǎng)IP地址;向服務(wù)器發(fā)送所獲取的自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符,且從所述服務(wù)器獲取與所述服務(wù)器相連接的所有終端的外網(wǎng)IP地址和終端標(biāo)識(shí)符;根據(jù)所述終端標(biāo)識(shí)符,從與所述服務(wù)器相連接的終端的外網(wǎng)IP地址中查詢目標(biāo)終端的外網(wǎng)IP地址;所述目標(biāo)終端處于第二局域網(wǎng)中;根據(jù)所述目標(biāo)終端的外網(wǎng)IP地址與所述目標(biāo)終端進(jìn)行握手;在握手成功后,與所述目標(biāo)終端進(jìn)行數(shù)據(jù)傳輸。上述數(shù)據(jù)傳輸方法,向服務(wù)器進(jìn)行注冊(cè)后,可以獲取在服務(wù)器注冊(cè)的所有的終端的外網(wǎng)IP地址,通過該外網(wǎng)IP地址,終端可以和目標(biāo)終端進(jìn)行通信,不需要再將信息在服務(wù)器進(jìn)行中轉(zhuǎn),提高了終端之間通信的實(shí)時(shí)性,進(jìn)而提高了用戶的體驗(yàn)。在其中一個(gè)實(shí)施例中,所述向服務(wù)器發(fā)送所獲取的自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符的步驟,包括:將自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符依次通過第一局域網(wǎng)路由器、虛擬中轉(zhuǎn)路由器發(fā)送到所述服務(wù)器;所述第一局域網(wǎng)路由器位于所述第一局域網(wǎng)中。在其中一個(gè)實(shí)施例中,所述根據(jù)所述目標(biāo)終端的外網(wǎng)IP地址與所述目標(biāo)終端進(jìn)行握手的步驟,包括:根據(jù)所述目標(biāo)終端的外網(wǎng)IP地址,通過所述局域網(wǎng)路由器和所述虛擬中轉(zhuǎn)路由器,向所述目標(biāo)終端發(fā)送第一數(shù)據(jù)包,該第一數(shù)據(jù)包的Session字段的值為第一預(yù)設(shè)值;接收所述目標(biāo)終端所返回的與所述第一數(shù)據(jù)包相對(duì)應(yīng)的第二數(shù)據(jù)包;當(dāng)所述第二數(shù)據(jù)包的Session字段的值為第二預(yù)設(shè)值時(shí),向所述目標(biāo)終端發(fā)送第三數(shù)據(jù)包,該第三數(shù)據(jù)包的Session字段的值為第三預(yù)設(shè)值;接收所述目標(biāo)終端所返回的與所述第三數(shù)據(jù)包相對(duì)應(yīng)的第四數(shù)據(jù)包;當(dāng)該第四數(shù)據(jù)包的Session字段的值為第四預(yù)設(shè)值時(shí),輸出與所述目標(biāo)終端握手成功的結(jié)果。在其中一個(gè)實(shí)施例中,當(dāng)向所述目標(biāo)終端發(fā)送第一數(shù)據(jù)包或第三數(shù)據(jù)包后,在預(yù)設(shè)時(shí)間間隔內(nèi)未接收到來自所述目標(biāo)終端的數(shù)據(jù)包,則返回連接超時(shí)的結(jié)果。在其中一個(gè)實(shí)施例中,所述與所述目標(biāo)終端進(jìn)行通信的步驟,包括:獲取待傳輸數(shù)據(jù);將所述待傳輸數(shù)據(jù)依次通過所述第一局域網(wǎng)路由器、至少一個(gè)虛擬中轉(zhuǎn)路由器和第二局域網(wǎng)路由器發(fā)送到所述目標(biāo)終端;所述第二局域網(wǎng)路由器位于所述第二局域網(wǎng)中。一種數(shù)據(jù)傳輸裝置,包括:自身地址獲取模塊,用于在接入第一局域網(wǎng)后獲取自身的外網(wǎng)IP地址;注冊(cè)模塊,用于向服務(wù)器發(fā)送所獲取的自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符,且從所述服務(wù)器獲取與所述服務(wù)器相連接的所有終端的外網(wǎng)IP地址和終端標(biāo)識(shí)符;目標(biāo)地址獲取模塊,用于根據(jù)所述終端標(biāo)識(shí)符,從與所述服務(wù)器相連接的終端的外網(wǎng)IP地址中查詢目標(biāo)終端的外網(wǎng)IP地址;所述目標(biāo)終端處于第二局域網(wǎng)中;握手模塊,用于根據(jù)所述目標(biāo)終端的外網(wǎng)IP地址與所述目標(biāo)終端進(jìn)行握手;通信模塊,用于在握手成功后,與所述目標(biāo)終端進(jìn)行數(shù)據(jù)傳輸。在其中一個(gè)實(shí)施例中,所述注冊(cè)模塊還用于將自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符依次通過第一局域網(wǎng)路由器、虛擬中轉(zhuǎn)路由器發(fā)送到所述服務(wù)器;所述第一局域網(wǎng)路由器位于所述第一局域網(wǎng)中。在其中一個(gè)實(shí)施例中,所述握手模塊包括:第一發(fā)送單元,用于根據(jù)所述目標(biāo)終端的外網(wǎng)IP地址,通過所述局域網(wǎng)路由器和所述虛擬中轉(zhuǎn)路由器,向所述目標(biāo)終端發(fā)送第一數(shù)據(jù)包,該第一數(shù)據(jù)包的Session字段的值為第一預(yù)設(shè)值;第一接收單元,用于接收所述目標(biāo)終端所返回的與所述第一數(shù)據(jù)包相對(duì)應(yīng)的第二數(shù)據(jù)包;第二發(fā)送單元,用于當(dāng)所述第二數(shù)據(jù)包的Session字段的值為第二預(yù)設(shè)值時(shí),向所述目標(biāo)終端發(fā)送第三數(shù)據(jù)包,該第三數(shù)據(jù)包的Session字段的值為第三預(yù)設(shè)值;第二接收單元,用于接收所述目標(biāo)終端所返回的與所述第三數(shù)據(jù)包相對(duì)應(yīng)的第四數(shù)據(jù)包;輸出單元,用于在該第四數(shù)據(jù)包的Session字段的值為第四預(yù)設(shè)值時(shí),輸出與所述目標(biāo)終端握手成功的結(jié)果。在其中一個(gè)實(shí)施例中,所述握手模塊還包括:超時(shí)單元,用于在向所述目標(biāo)終端發(fā)送第一數(shù)據(jù)包或第三數(shù)據(jù)包后,在預(yù)設(shè)時(shí)間間隔內(nèi)未接收到來自所述目標(biāo)終端的數(shù)據(jù)包時(shí),返回連接超時(shí)的結(jié)果。在其中一個(gè)實(shí)施例中,所述通信模塊包括:數(shù)據(jù)獲取單元,用于獲取待傳輸數(shù)據(jù);第三發(fā)送單元,用于將所述待傳輸數(shù)據(jù)依次通過所述第一局域網(wǎng)路由器、至少一個(gè)虛擬中轉(zhuǎn)路由器和第二局域網(wǎng)路由器發(fā)送到所述目標(biāo)終端;所述第二局域網(wǎng)路由器位于所述第二局域網(wǎng)中。附圖說明圖1為一實(shí)施例中數(shù)據(jù)傳輸方法的流程圖;圖2為圖1所示實(shí)施例的一應(yīng)用場(chǎng)景圖;圖3為圖1所示實(shí)施例中握手過程的流程圖;圖4為一實(shí)施例中數(shù)據(jù)傳輸?shù)膫鬏斅窂綀D;圖5為一實(shí)施例中的數(shù)據(jù)傳輸裝置的示意圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。在詳細(xì)說明根據(jù)本發(fā)明的實(shí)施例前,應(yīng)該注意到的是,所述的實(shí)施例主要在于與數(shù)據(jù)傳輸方法相關(guān)的步驟的組合。因此,所屬方法步驟已經(jīng)在附圖中通過常規(guī)符號(hào)在適當(dāng)?shù)奈恢帽硎境鰜砹?,并且只示出了與理解本發(fā)明的實(shí)施例有關(guān)的細(xì)節(jié),以免因?qū)τ诘靡嬗诒景l(fā)明的本領(lǐng)域普通技術(shù)人員而言顯而易見的那些細(xì)節(jié)模糊了本發(fā)明的公開內(nèi)容。在本文中,諸如左和右,上和下,前和后,第一和第二之類的關(guān)系術(shù)語僅僅用來區(qū)分一個(gè)實(shí)體或動(dòng)作與另一個(gè)實(shí)體或動(dòng)作,而不一定要求或暗示這種實(shí)體或動(dòng)作之間的任何實(shí)際的這種關(guān)系或順序。術(shù)語“包括”、“包含”或任何其他變體旨在涵蓋非排他性的包含,由此使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包含這些要素,而且還包含沒有明確列出的其他要素,或者為這種過程、方法、物品或者設(shè)備所固有的要素。請(qǐng)參閱圖1所示,圖1為一實(shí)施例中數(shù)據(jù)傳輸方法的流程圖,在該實(shí)施例中,該數(shù)據(jù)傳輸方法可以包括:S102:接入第一局域網(wǎng)以獲取自身的外網(wǎng)IP地址。具體地,外網(wǎng)IP地址是指在聯(lián)網(wǎng)后在本局域網(wǎng)內(nèi)或整個(gè)互聯(lián)網(wǎng)中的有效身份,是實(shí)現(xiàn)兩個(gè)處于不同的局域網(wǎng)的終端的虛擬握手的基本條件。其中,IP全稱為InternetProtocol,意為互聯(lián)網(wǎng)協(xié)議。S104:向服務(wù)器發(fā)送所獲取的自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符,且從服務(wù)器獲取與服務(wù)器相連接的所有終端的外網(wǎng)IP地址和終端標(biāo)識(shí)符。其中,終端的標(biāo)識(shí)符是指終端的身份標(biāo)識(shí)符,其是唯一的,每一個(gè)終端均有唯一的身份標(biāo)識(shí)符,以便可以通過該身份標(biāo)識(shí)符識(shí)別該終端。服務(wù)器是終端進(jìn)行注冊(cè)的平臺(tái),是建立兩個(gè)處于不同局域網(wǎng)的終端之間聯(lián)系的必要部件。在服務(wù)器上可以存儲(chǔ)有與服務(wù)器相連接的各個(gè)終端的外網(wǎng)IP地址和終端標(biāo)識(shí)符,其可以以表格的形式進(jìn)行存儲(chǔ),當(dāng)服務(wù)器接收到終端發(fā)送來的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符時(shí),則向該表格中添加所接收到的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符,另外,服務(wù)器可以主動(dòng)向與其相連接的終端下發(fā)該表格,也可以在終端欲進(jìn)行通信時(shí),終端主動(dòng)向服務(wù)器獲取該表格。S106:根據(jù)終端標(biāo)識(shí)符,從與服務(wù)器相連接的終端的外網(wǎng)IP地址中查詢目標(biāo)終端的外網(wǎng)IP地址;目標(biāo)終端處于第二局域網(wǎng)中。具體地,待進(jìn)行數(shù)據(jù)傳輸?shù)膬蓚€(gè)終端分別歸屬于不同的局域網(wǎng)內(nèi),例如,其中一個(gè)終端處于第一局域網(wǎng)中,另一個(gè)終端(即目標(biāo)終端)處于第二局域網(wǎng)中,第一局域網(wǎng)和第二局域網(wǎng)并沒有直接連接。當(dāng)其中一個(gè)終端欲與另一個(gè)終端進(jìn)行數(shù)據(jù)傳輸時(shí),其首先會(huì)在服務(wù)器上進(jìn)行注冊(cè),并獲取也在服務(wù)器上進(jìn)行注冊(cè)過的其他終端的外網(wǎng)IP地址和終端標(biāo)識(shí)符,從而可以根據(jù)目標(biāo)終端的終端標(biāo)識(shí)符查詢到目標(biāo)終端的外網(wǎng)IP地址。S108:根據(jù)目標(biāo)終端的外網(wǎng)IP地址與目標(biāo)終端進(jìn)行握手。具體地,在數(shù)據(jù)進(jìn)行傳輸之前,先進(jìn)行握手過程,即通信的雙方在通信前對(duì)通信的方式等進(jìn)行協(xié)商,同時(shí)告訴對(duì)方已經(jīng)準(zhǔn)備好發(fā)送接收數(shù)據(jù),握手成功則表示建立了通信通道,可以進(jìn)行數(shù)據(jù)傳輸。S110:在握手成功后,與目標(biāo)終端進(jìn)行數(shù)據(jù)傳輸。具體地,兩個(gè)終端經(jīng)過在服務(wù)器上注冊(cè),并握手后,以后的數(shù)據(jù)傳輸則不再依賴服務(wù)器作為信息中轉(zhuǎn)站,實(shí)現(xiàn)了不同局域網(wǎng)內(nèi)的兩個(gè)終端的數(shù)據(jù)傳輸。上述數(shù)據(jù)傳輸方法,向服務(wù)器進(jìn)行注冊(cè)后,可以獲取在服務(wù)器注冊(cè)的所有的終端的外網(wǎng)IP地址,通過該外網(wǎng)IP地址,終端可以和目標(biāo)終端進(jìn)行通信,不需要再將信息在服務(wù)器進(jìn)行中轉(zhuǎn),提高了終端之間通信的實(shí)時(shí)性,進(jìn)而提高了用戶的體驗(yàn)。在其中一個(gè)實(shí)施例中,向服務(wù)器發(fā)送所獲取的自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符的步驟,即步驟S104可以包括:將自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符依次通過第一局域網(wǎng)路由器、虛擬中轉(zhuǎn)路由器發(fā)送到服務(wù)器;第一局域網(wǎng)路由器位于第一局域網(wǎng)中。具體地,局域網(wǎng)路由器主要是給終端分配外網(wǎng)IP地址,以及連接虛擬中轉(zhuǎn)路由器或服務(wù)器。虛擬中轉(zhuǎn)路由器主要是用于連接服務(wù)器、連接其他虛擬中轉(zhuǎn)路由器或連接局域網(wǎng)路由器。請(qǐng)參閱圖2所示,圖2為圖1所示實(shí)施例的一應(yīng)用場(chǎng)景圖,第一終端和第二終端均含有接入局域網(wǎng)的無線通信模塊500,該無線通信模塊500主要是WIFI通信模塊,在其他的實(shí)施例中,還可以是藍(lán)牙、zigbee等。第一終端接入第一局域網(wǎng),第二終端接入第二局域網(wǎng)后,分別獲取到其自身的外網(wǎng)IP地址,第一外網(wǎng)IP地址和第二外網(wǎng)IP地址,第一終端通過第一局域網(wǎng)路由器和第一虛擬中轉(zhuǎn)路由器將第一外網(wǎng)IP地址和第一終端標(biāo)識(shí)符發(fā)送到服務(wù)器,第二終端通過第二局域網(wǎng)路由器和第二虛擬中轉(zhuǎn)路由器將第二外網(wǎng)IP地址和第二終端標(biāo)識(shí)符發(fā)送到服務(wù)器,以實(shí)現(xiàn)第一終端和第二終端在服務(wù)器的注冊(cè)。在其他的實(shí)施例中,第一終端和第二終端可以均需要經(jīng)過多個(gè)虛擬中轉(zhuǎn)路由器才能夠?qū)⒆陨淼耐饩W(wǎng)IP地址和終端標(biāo)識(shí)符發(fā)送到服務(wù)器上,例如,3個(gè),4個(gè),8個(gè)等,在此對(duì)該數(shù)量不作限制。在上述實(shí)施例中,通過局域網(wǎng)路由器和虛擬中轉(zhuǎn)路由器將自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符發(fā)送到服務(wù)器,實(shí)現(xiàn)了終端在服務(wù)器的注冊(cè),為后續(xù)兩個(gè)終端之間建立通信通道奠定基礎(chǔ),且通過虛擬中轉(zhuǎn)路由器進(jìn)行信息的傳輸,高效、快速。在其中一個(gè)實(shí)施例中,第一終端和第二終端進(jìn)行握手的數(shù)據(jù)包主要包括以下字段:Flags字段,其長度一般為2bytes,固定值為0xF0F0,用于定義數(shù)據(jù)包為Tunnelconnect數(shù)據(jù)包,即握手?jǐn)?shù)據(jù)包,用于進(jìn)行信道的建立。Session字段,其長度一般為4bytes,為發(fā)起會(huì)話的標(biāo)識(shí)符。Stat字段,其長度一般為2bits,用于表示通信狀態(tài)。Value字段,其長度一般為4bytes,用于質(zhì)量統(tǒng)計(jì)參考,主要是丟包率的計(jì)算。Extras字段,其長度一般為4bytes,是用戶擴(kuò)展位,具體可以參見如下表1所示,表1:握手?jǐn)?shù)據(jù)包Flags字段Session字段Stat字段Value字段Extras字段2bytes4bytes2bits4bytes4bytes在計(jì)算機(jī)程序中,可以通過結(jié)構(gòu)體來定義該握手?jǐn)?shù)據(jù)包,如下所示:請(qǐng)參閱圖3所示,圖3為圖1所示實(shí)施例中握手過程的流程圖,在該實(shí)施例中,第一終端和第二終端的握手機(jī)制是四次握手機(jī)制,即根據(jù)目標(biāo)終端的外網(wǎng)IP地址與目標(biāo)終端進(jìn)行握手的步驟,即步驟S108可以包括:S302:根據(jù)目標(biāo)終端的外網(wǎng)IP地址,通過局域網(wǎng)路由器和虛擬中轉(zhuǎn)路由器,向目標(biāo)終端發(fā)送第一數(shù)據(jù)包,該第一數(shù)據(jù)包的Session字段的值為第一預(yù)設(shè)值。具體地,一般設(shè)置第一預(yù)設(shè)值為0,即第一終端向第二終端發(fā)送請(qǐng)求連接的數(shù)據(jù)包中“Session=0”。S304:接收目標(biāo)終端所返回的與第一數(shù)據(jù)包相對(duì)應(yīng)的第二數(shù)據(jù)包。具體地,如果第二終端可正常通信,第二終端會(huì)響應(yīng)第一終端發(fā)送來的第一數(shù)據(jù)包,并向第一終端發(fā)送第二數(shù)據(jù)包,一般第二數(shù)據(jù)包中Session字段的內(nèi)容會(huì)相應(yīng)地進(jìn)行改變。S306:當(dāng)?shù)诙?shù)據(jù)包的Session字段的值為第二預(yù)設(shè)值時(shí),向目標(biāo)終端發(fā)送第三數(shù)據(jù)包,該第三數(shù)據(jù)包的Session字段的值為第三預(yù)設(shè)值。具體地,一般設(shè)置第二預(yù)設(shè)值為1,即“Session=1”在第一終端接收該第二數(shù)據(jù)包后,讀取第二數(shù)據(jù)包的Session字段的內(nèi)容,如果該Session字段的內(nèi)容未1,則該第一終端會(huì)繼續(xù)向第二終端發(fā)送第三數(shù)據(jù)包,該第三數(shù)據(jù)包中的Session字段的第三預(yù)設(shè)值一般設(shè)置為2,即“Session=2”。S308:接收目標(biāo)終端所返回的與第三數(shù)據(jù)包相對(duì)應(yīng)的第四數(shù)據(jù)包。具體地,如果第二終端可正常通信,第二終端會(huì)響應(yīng)第一終端發(fā)送來的第三數(shù)據(jù)包,并向第一終端發(fā)送第四數(shù)據(jù)包,一般第四數(shù)據(jù)包中Session字段的內(nèi)容會(huì)相應(yīng)地進(jìn)行改變。S310:當(dāng)該第四數(shù)據(jù)包的Session字段的值為第四預(yù)設(shè)值時(shí),輸出與目標(biāo)終端握手成功的結(jié)果。具體地,一般設(shè)置第四預(yù)設(shè)值為3,即“Session=3”在第一終端接收該第四數(shù)據(jù)包后,讀取第四數(shù)據(jù)包的Session字段的內(nèi)容,如果該Session字段的內(nèi)容為3,則標(biāo)識(shí)握手成功,即通信信道建立,可以進(jìn)行后續(xù)的數(shù)據(jù)傳輸。在上述實(shí)施例中,通過四次握手機(jī)制,建立了第一終端和第二終端之間的通信信道,以便于后續(xù)數(shù)據(jù)傳輸?shù)目焖俑咝У剡M(jìn)行。在其中一個(gè)實(shí)施例中,當(dāng)向目標(biāo)終端發(fā)送第一數(shù)據(jù)包或第三數(shù)據(jù)包后,在預(yù)設(shè)時(shí)間間隔內(nèi)未接收到來自目標(biāo)終端的數(shù)據(jù)包,則返回連接超時(shí)的結(jié)果。在該實(shí)施例中,一般握手發(fā)起數(shù)據(jù)包默認(rèn)間隔為20毫秒/包,而設(shè)置預(yù)設(shè)時(shí)間間隔為4秒,因此如果超過4秒,則默認(rèn)超時(shí),在其他的實(shí)施例中,預(yù)設(shè)時(shí)間間隔可以為其他的時(shí)間,例如3秒、5秒、7秒等。在其中一個(gè)實(shí)施例中,與目標(biāo)終端進(jìn)行通信的步驟,即步驟S110可以包括:首先獲取待傳輸數(shù)據(jù)。具體地,該待傳輸數(shù)據(jù)可以仍以上述數(shù)據(jù)包的方式進(jìn)行傳播,其可以設(shè)置在Extras字段中。其次將待傳輸數(shù)據(jù)依次通過第一局域網(wǎng)路由器、至少一個(gè)虛擬中轉(zhuǎn)路由器和第二局域網(wǎng)路由器發(fā)送到目標(biāo)終端;其中,第二局域網(wǎng)路由器位于第二局域網(wǎng)中。在該實(shí)施例中,由于第一終端和第二終端之間的距離可能較遠(yuǎn),因此至少要通過一個(gè)虛擬中轉(zhuǎn)路由器才能將待傳輸數(shù)據(jù)發(fā)送到目標(biāo)終端,例如可以是1個(gè)虛擬中轉(zhuǎn)路由器、3個(gè)虛擬中轉(zhuǎn)路由器、6個(gè)虛擬中轉(zhuǎn)路由器等。具體地,如圖4所示,圖4為一實(shí)施例中數(shù)據(jù)傳輸?shù)膫鬏斅窂綀D,第一終端和第二終端在握手成功后,兩個(gè)終端之間可進(jìn)行無障礙的數(shù)據(jù)傳輸。第一終端獲取待傳輸數(shù)據(jù),通過第一局域網(wǎng)路由器發(fā)送的到第一虛擬中轉(zhuǎn)路由器,然后通過第一虛擬中轉(zhuǎn)路由器發(fā)送到第二虛擬中轉(zhuǎn)路由器,一直發(fā)送到第N虛擬中轉(zhuǎn)路由器(N為大于等于2的正整數(shù),第N虛擬中轉(zhuǎn)路由器與第二局域網(wǎng)路由器直接相連接),再由第N虛擬中轉(zhuǎn)路由器發(fā)送到第二局域網(wǎng)路由器,最后到達(dá)第二終端,第二終端根據(jù)發(fā)送來的數(shù)據(jù)執(zhí)行相應(yīng)的操作或動(dòng)作。另外,如圖4中的虛線所示,第一終端和第二終端在握手成功后,兩個(gè)終端之間可進(jìn)行無障礙的數(shù)據(jù)傳輸,第二終端獲取待傳輸數(shù)據(jù),通過第二局域網(wǎng)路由器發(fā)送的到第N虛擬中轉(zhuǎn)路由器(N為大于等于2的正整數(shù),第N虛擬中轉(zhuǎn)路由器與第二局域網(wǎng)路由器直接相連接),然后通過第N虛擬中轉(zhuǎn)路由器發(fā)送到第N-1虛擬中轉(zhuǎn)路由器,一直發(fā)送到第一虛擬中轉(zhuǎn)路由器,再由第一虛擬中轉(zhuǎn)路由器發(fā)送到第一局域網(wǎng)路由器,最后到達(dá)第一終端,第一終端根據(jù)發(fā)送來的數(shù)據(jù)執(zhí)行相應(yīng)的操作或動(dòng)作。上述實(shí)施例中,在第一終端和第二終端握手成功后,第一終端和第二終端通過局域網(wǎng)路由器和虛擬中轉(zhuǎn)路由器實(shí)現(xiàn)高效、快速的實(shí)時(shí)穿透通信,不再依賴服務(wù)器作為信息中轉(zhuǎn)站。在其中一個(gè)實(shí)施例中,當(dāng)與目標(biāo)終端通信結(jié)束后,可以關(guān)閉與目標(biāo)終端相通信的接口。上述方法可以是依賴UDP(UserDatagramProtocol,用戶數(shù)據(jù)包協(xié)議)和IPv4(是互聯(lián)網(wǎng)協(xié)議的第四版),API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)采用UnixTCPProgramming協(xié)議穿透(Tunnel)。在經(jīng)過四次握手穿透成功連接后,斷開連接僅需要關(guān)閉UDPsocket,其操作簡單。另外,可以使用丟包率的統(tǒng)計(jì)方法來評(píng)價(jià)上述的數(shù)據(jù)傳輸方法的當(dāng)前穿透會(huì)話的網(wǎng)絡(luò)信號(hào)的強(qiáng)度,例如使用Value字段來統(tǒng)計(jì)當(dāng)前發(fā)送和接收的數(shù)據(jù)包的數(shù)量,例如當(dāng)Value(step#n)中n為偶數(shù),表示發(fā)起端發(fā)起在第n次會(huì)話時(shí)的計(jì)數(shù)值;同理Value(step#m)中m為奇數(shù),表示接收端在第m次會(huì)話時(shí)的計(jì)數(shù)。在一個(gè)實(shí)施例中,假設(shè)第一終端會(huì)話中記錄發(fā)送數(shù)據(jù)包的數(shù)量req(對(duì)應(yīng)于value字段),第一終端接收第二終端返回的數(shù)據(jù)包時(shí),獲取Extras字段的值ack(由第二終端記錄收到的第一終端發(fā)送的Value字段值),如果第一終端沒有接收到回復(fù),則記ack=0,從而丟包率可以表示為(req-ack)/req,因此對(duì)于上述數(shù)據(jù)傳輸方法的評(píng)估方法也較為簡單。請(qǐng)參閱圖5所示,圖5為一實(shí)施例中的數(shù)據(jù)傳輸裝置的示意圖,在該實(shí)施例中,該裝置可以包括:自身地址獲取模塊100,用于在接入第一局域網(wǎng)后獲取自身的外網(wǎng)IP地址。注冊(cè)模塊200,用于向服務(wù)器發(fā)送所獲取的自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符,且從服務(wù)器獲取與服務(wù)器相連接的所有終端的外網(wǎng)IP地址和終端標(biāo)識(shí)符。目標(biāo)地址獲取模塊300,用于根據(jù)終端標(biāo)識(shí)符,從與服務(wù)器相連接的終端的外網(wǎng)IP地址中查詢目標(biāo)終端的外網(wǎng)IP地址;目標(biāo)終端處于第二局域網(wǎng)中。握手模塊400,用于根據(jù)目標(biāo)終端的外網(wǎng)IP地址與目標(biāo)終端進(jìn)行握手。通信模塊500,用于在握手成功后,與目標(biāo)終端進(jìn)行數(shù)據(jù)傳輸。在其中一個(gè)實(shí)施例中,注冊(cè)模塊200還可以用于將自身的外網(wǎng)IP地址和自身的終端標(biāo)識(shí)符依次通過第一局域網(wǎng)路由器、虛擬中轉(zhuǎn)路由器發(fā)送到服務(wù)器;第一局域網(wǎng)路由器位于第一局域網(wǎng)中。在其中一個(gè)實(shí)施例中,握手模塊400可以包括:第一發(fā)送單元,用于根據(jù)目標(biāo)終端的外網(wǎng)IP地址,通過局域網(wǎng)路由器和虛擬中轉(zhuǎn)路由器,向目標(biāo)終端發(fā)送第一數(shù)據(jù)包,該第一數(shù)據(jù)包的Session字段的值為第一預(yù)設(shè)值。第一接收單元,用于接收目標(biāo)終端所返回的與第一數(shù)據(jù)包相對(duì)應(yīng)的第二數(shù)據(jù)包。第二發(fā)送單元,用于當(dāng)?shù)诙?shù)據(jù)包的Session字段的值為第二預(yù)設(shè)值時(shí),向目標(biāo)終端發(fā)送第三數(shù)據(jù)包,該第三數(shù)據(jù)包的Session字段的值為第三預(yù)設(shè)值。第二接收單元,用于接收目標(biāo)終端所返回的與第三數(shù)據(jù)包相對(duì)應(yīng)的第四數(shù)據(jù)包。輸出單元,用于在該第四數(shù)據(jù)包的Session字段的值為第四預(yù)設(shè)值時(shí),輸出與目標(biāo)終端握手成功的結(jié)果。在其中一個(gè)實(shí)施例中,握手模塊400還可以包括:超時(shí)單元,用于在向目標(biāo)終端發(fā)送第一數(shù)據(jù)包或第三數(shù)據(jù)包后,在預(yù)設(shè)時(shí)間間隔內(nèi)未接收到來自目標(biāo)終端的數(shù)據(jù)包時(shí),返回連接超時(shí)的結(jié)果。在其中一個(gè)實(shí)施例中,通信模塊500可以包括:數(shù)據(jù)獲取單元,用于獲取待傳輸數(shù)據(jù);第三發(fā)送單元,用于將待傳輸數(shù)據(jù)依次通過第一局域網(wǎng)路由器、至少一個(gè)虛擬中轉(zhuǎn)路由器和第二局域網(wǎng)路由器發(fā)送到目標(biāo)終端;其中,第二局域網(wǎng)路由器位于第二局域網(wǎng)中。上述實(shí)施例中所涉及的裝置的具體內(nèi)容可以參見上述對(duì)方法的限定,在此不再贅述。以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。當(dāng)前第1頁1 2 3