麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

數據傳輸方法與流程

文檔序號:11148085閱讀:704來源:國知局
數據傳輸方法與制造工藝
本發明涉及通信領域,特別是涉及一種數據傳輸方法。
背景技術
:目前,終端間通訊協議多采用HTTP(Hypertexttransferprotocol,超文本傳輸協議)、HTTPS(HypertextTransferProtocoloverSecureSocketLayer,以安全為目標的HTTP通道)、CoAP(ConstrainedApplicationProtocol,受限制的應用協議)、TFTP(TrivialFileTransferProtocol,簡單文件傳輸協議)等。它們都是基于TCP/IP協議(TransmissionControlProtocol/InternetProtocol的簡寫,中文譯名為傳輸控制協議/網際協議,又叫網絡通訊協議)族衍生出來的通訊協議,HTTP是以三次握手的成功進行數據傳輸,同樣的,HTTPS只把HTTP明文傳輸方式改為密文傳輸方式;COAP一般采用UDP(UserDatagramProtocol的簡稱,中文名是用戶數據包協議)的形式傳遞數據,協議非常小,最小的數據包只有4bytes,低功耗的同時,數據傳輸效率低;TFTP也僅為較微型終端的文件傳輸而設計。隨著日新月異的物聯網技術,終端間也需遠程通訊能力。因此,若終端用以上協議進行遠程通訊,將十分依賴后臺服務器作為信息中轉站,無疑增加了設計成本和開發難度,也就使得物聯網的遠程通訊具有一定的局限性。技術實現要素:基于此,有必要提供一種數據傳輸方法,其在服務器上注冊后,在不同的局域網內的終端可以進行通信,而不需要依賴服務器作為信息中轉站。一種數據傳輸方法,所述方法包括:接入第一局域網以獲取自身的外網IP地址;向服務器發送所獲取的自身的外網IP地址和自身的終端標識符,且從所述服務器獲取與所述服務器相連接的所有終端的外網IP地址和終端標識符;根據所述終端標識符,從與所述服務器相連接的終端的外網IP地址中查詢目標終端的外網IP地址;所述目標終端處于第二局域網中;根據所述目標終端的外網IP地址與所述目標終端進行握手;在握手成功后,與所述目標終端進行數據傳輸。上述數據傳輸方法,向服務器進行注冊后,可以獲取在服務器注冊的所有的終端的外網IP地址,通過該外網IP地址,終端可以和目標終端進行通信,不需要再將信息在服務器進行中轉,提高了終端之間通信的實時性,進而提高了用戶的體驗。在其中一個實施例中,所述向服務器發送所獲取的自身的外網IP地址和自身的終端標識符的步驟,包括:將自身的外網IP地址和自身的終端標識符依次通過第一局域網路由器、虛擬中轉路由器發送到所述服務器;所述第一局域網路由器位于所述第一局域網中。在其中一個實施例中,所述根據所述目標終端的外網IP地址與所述目標終端進行握手的步驟,包括:根據所述目標終端的外網IP地址,通過所述局域網路由器和所述虛擬中轉路由器,向所述目標終端發送第一數據包,該第一數據包的Session字段的值為第一預設值;接收所述目標終端所返回的與所述第一數據包相對應的第二數據包;當所述第二數據包的Session字段的值為第二預設值時,向所述目標終端發送第三數據包,該第三數據包的Session字段的值為第三預設值;接收所述目標終端所返回的與所述第三數據包相對應的第四數據包;當該第四數據包的Session字段的值為第四預設值時,輸出與所述目標終端握手成功的結果。在其中一個實施例中,當向所述目標終端發送第一數據包或第三數據包后,在預設時間間隔內未接收到來自所述目標終端的數據包,則返回連接超時的結果。在其中一個實施例中,所述與所述目標終端進行通信的步驟,包括:獲取待傳輸數據;將所述待傳輸數據依次通過所述第一局域網路由器、至少一個虛擬中轉路由器和第二局域網路由器發送到所述目標終端;所述第二局域網路由器位于所述第二局域網中。一種數據傳輸裝置,包括:自身地址獲取模塊,用于在接入第一局域網后獲取自身的外網IP地址;注冊模塊,用于向服務器發送所獲取的自身的外網IP地址和自身的終端標識符,且從所述服務器獲取與所述服務器相連接的所有終端的外網IP地址和終端標識符;目標地址獲取模塊,用于根據所述終端標識符,從與所述服務器相連接的終端的外網IP地址中查詢目標終端的外網IP地址;所述目標終端處于第二局域網中;握手模塊,用于根據所述目標終端的外網IP地址與所述目標終端進行握手;通信模塊,用于在握手成功后,與所述目標終端進行數據傳輸。在其中一個實施例中,所述注冊模塊還用于將自身的外網IP地址和自身的終端標識符依次通過第一局域網路由器、虛擬中轉路由器發送到所述服務器;所述第一局域網路由器位于所述第一局域網中。在其中一個實施例中,所述握手模塊包括:第一發送單元,用于根據所述目標終端的外網IP地址,通過所述局域網路由器和所述虛擬中轉路由器,向所述目標終端發送第一數據包,該第一數據包的Session字段的值為第一預設值;第一接收單元,用于接收所述目標終端所返回的與所述第一數據包相對應的第二數據包;第二發送單元,用于當所述第二數據包的Session字段的值為第二預設值時,向所述目標終端發送第三數據包,該第三數據包的Session字段的值為第三預設值;第二接收單元,用于接收所述目標終端所返回的與所述第三數據包相對應的第四數據包;輸出單元,用于在該第四數據包的Session字段的值為第四預設值時,輸出與所述目標終端握手成功的結果。在其中一個實施例中,所述握手模塊還包括:超時單元,用于在向所述目標終端發送第一數據包或第三數據包后,在預設時間間隔內未接收到來自所述目標終端的數據包時,返回連接超時的結果。在其中一個實施例中,所述通信模塊包括:數據獲取單元,用于獲取待傳輸數據;第三發送單元,用于將所述待傳輸數據依次通過所述第一局域網路由器、至少一個虛擬中轉路由器和第二局域網路由器發送到所述目標終端;所述第二局域網路由器位于所述第二局域網中。附圖說明圖1為一實施例中數據傳輸方法的流程圖;圖2為圖1所示實施例的一應用場景圖;圖3為圖1所示實施例中握手過程的流程圖;圖4為一實施例中數據傳輸的傳輸路徑圖;圖5為一實施例中的數據傳輸裝置的示意圖。具體實施方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用于解釋本發明,并不用于限定本發明。在詳細說明根據本發明的實施例前,應該注意到的是,所述的實施例主要在于與數據傳輸方法相關的步驟的組合。因此,所屬方法步驟已經在附圖中通過常規符號在適當的位置表示出來了,并且只示出了與理解本發明的實施例有關的細節,以免因對于得益于本發明的本領域普通技術人員而言顯而易見的那些細節模糊了本發明的公開內容。在本文中,諸如左和右,上和下,前和后,第一和第二之類的關系術語僅僅用來區分一個實體或動作與另一個實體或動作,而不一定要求或暗示這種實體或動作之間的任何實際的這種關系或順序。術語“包括”、“包含”或任何其他變體旨在涵蓋非排他性的包含,由此使得包括一系列要素的過程、方法、物品或者設備不僅包含這些要素,而且還包含沒有明確列出的其他要素,或者為這種過程、方法、物品或者設備所固有的要素。請參閱圖1所示,圖1為一實施例中數據傳輸方法的流程圖,在該實施例中,該數據傳輸方法可以包括:S102:接入第一局域網以獲取自身的外網IP地址。具體地,外網IP地址是指在聯網后在本局域網內或整個互聯網中的有效身份,是實現兩個處于不同的局域網的終端的虛擬握手的基本條件。其中,IP全稱為InternetProtocol,意為互聯網協議。S104:向服務器發送所獲取的自身的外網IP地址和自身的終端標識符,且從服務器獲取與服務器相連接的所有終端的外網IP地址和終端標識符。其中,終端的標識符是指終端的身份標識符,其是唯一的,每一個終端均有唯一的身份標識符,以便可以通過該身份標識符識別該終端。服務器是終端進行注冊的平臺,是建立兩個處于不同局域網的終端之間聯系的必要部件。在服務器上可以存儲有與服務器相連接的各個終端的外網IP地址和終端標識符,其可以以表格的形式進行存儲,當服務器接收到終端發送來的外網IP地址和自身的終端標識符時,則向該表格中添加所接收到的外網IP地址和自身的終端標識符,另外,服務器可以主動向與其相連接的終端下發該表格,也可以在終端欲進行通信時,終端主動向服務器獲取該表格。S106:根據終端標識符,從與服務器相連接的終端的外網IP地址中查詢目標終端的外網IP地址;目標終端處于第二局域網中。具體地,待進行數據傳輸的兩個終端分別歸屬于不同的局域網內,例如,其中一個終端處于第一局域網中,另一個終端(即目標終端)處于第二局域網中,第一局域網和第二局域網并沒有直接連接。當其中一個終端欲與另一個終端進行數據傳輸時,其首先會在服務器上進行注冊,并獲取也在服務器上進行注冊過的其他終端的外網IP地址和終端標識符,從而可以根據目標終端的終端標識符查詢到目標終端的外網IP地址。S108:根據目標終端的外網IP地址與目標終端進行握手。具體地,在數據進行傳輸之前,先進行握手過程,即通信的雙方在通信前對通信的方式等進行協商,同時告訴對方已經準備好發送接收數據,握手成功則表示建立了通信通道,可以進行數據傳輸。S110:在握手成功后,與目標終端進行數據傳輸。具體地,兩個終端經過在服務器上注冊,并握手后,以后的數據傳輸則不再依賴服務器作為信息中轉站,實現了不同局域網內的兩個終端的數據傳輸。上述數據傳輸方法,向服務器進行注冊后,可以獲取在服務器注冊的所有的終端的外網IP地址,通過該外網IP地址,終端可以和目標終端進行通信,不需要再將信息在服務器進行中轉,提高了終端之間通信的實時性,進而提高了用戶的體驗。在其中一個實施例中,向服務器發送所獲取的自身的外網IP地址和自身的終端標識符的步驟,即步驟S104可以包括:將自身的外網IP地址和自身的終端標識符依次通過第一局域網路由器、虛擬中轉路由器發送到服務器;第一局域網路由器位于第一局域網中。具體地,局域網路由器主要是給終端分配外網IP地址,以及連接虛擬中轉路由器或服務器。虛擬中轉路由器主要是用于連接服務器、連接其他虛擬中轉路由器或連接局域網路由器。請參閱圖2所示,圖2為圖1所示實施例的一應用場景圖,第一終端和第二終端均含有接入局域網的無線通信模塊500,該無線通信模塊500主要是WIFI通信模塊,在其他的實施例中,還可以是藍牙、zigbee等。第一終端接入第一局域網,第二終端接入第二局域網后,分別獲取到其自身的外網IP地址,第一外網IP地址和第二外網IP地址,第一終端通過第一局域網路由器和第一虛擬中轉路由器將第一外網IP地址和第一終端標識符發送到服務器,第二終端通過第二局域網路由器和第二虛擬中轉路由器將第二外網IP地址和第二終端標識符發送到服務器,以實現第一終端和第二終端在服務器的注冊。在其他的實施例中,第一終端和第二終端可以均需要經過多個虛擬中轉路由器才能夠將自身的外網IP地址和終端標識符發送到服務器上,例如,3個,4個,8個等,在此對該數量不作限制。在上述實施例中,通過局域網路由器和虛擬中轉路由器將自身的外網IP地址和自身的終端標識符發送到服務器,實現了終端在服務器的注冊,為后續兩個終端之間建立通信通道奠定基礎,且通過虛擬中轉路由器進行信息的傳輸,高效、快速。在其中一個實施例中,第一終端和第二終端進行握手的數據包主要包括以下字段:Flags字段,其長度一般為2bytes,固定值為0xF0F0,用于定義數據包為Tunnelconnect數據包,即握手數據包,用于進行信道的建立。Session字段,其長度一般為4bytes,為發起會話的標識符。Stat字段,其長度一般為2bits,用于表示通信狀態。Value字段,其長度一般為4bytes,用于質量統計參考,主要是丟包率的計算。Extras字段,其長度一般為4bytes,是用戶擴展位,具體可以參見如下表1所示,表1:握手數據包Flags字段Session字段Stat字段Value字段Extras字段2bytes4bytes2bits4bytes4bytes在計算機程序中,可以通過結構體來定義該握手數據包,如下所示:請參閱圖3所示,圖3為圖1所示實施例中握手過程的流程圖,在該實施例中,第一終端和第二終端的握手機制是四次握手機制,即根據目標終端的外網IP地址與目標終端進行握手的步驟,即步驟S108可以包括:S302:根據目標終端的外網IP地址,通過局域網路由器和虛擬中轉路由器,向目標終端發送第一數據包,該第一數據包的Session字段的值為第一預設值。具體地,一般設置第一預設值為0,即第一終端向第二終端發送請求連接的數據包中“Session=0”。S304:接收目標終端所返回的與第一數據包相對應的第二數據包。具體地,如果第二終端可正常通信,第二終端會響應第一終端發送來的第一數據包,并向第一終端發送第二數據包,一般第二數據包中Session字段的內容會相應地進行改變。S306:當第二數據包的Session字段的值為第二預設值時,向目標終端發送第三數據包,該第三數據包的Session字段的值為第三預設值。具體地,一般設置第二預設值為1,即“Session=1”在第一終端接收該第二數據包后,讀取第二數據包的Session字段的內容,如果該Session字段的內容未1,則該第一終端會繼續向第二終端發送第三數據包,該第三數據包中的Session字段的第三預設值一般設置為2,即“Session=2”。S308:接收目標終端所返回的與第三數據包相對應的第四數據包。具體地,如果第二終端可正常通信,第二終端會響應第一終端發送來的第三數據包,并向第一終端發送第四數據包,一般第四數據包中Session字段的內容會相應地進行改變。S310:當該第四數據包的Session字段的值為第四預設值時,輸出與目標終端握手成功的結果。具體地,一般設置第四預設值為3,即“Session=3”在第一終端接收該第四數據包后,讀取第四數據包的Session字段的內容,如果該Session字段的內容為3,則標識握手成功,即通信信道建立,可以進行后續的數據傳輸。在上述實施例中,通過四次握手機制,建立了第一終端和第二終端之間的通信信道,以便于后續數據傳輸的快速高效地進行。在其中一個實施例中,當向目標終端發送第一數據包或第三數據包后,在預設時間間隔內未接收到來自目標終端的數據包,則返回連接超時的結果。在該實施例中,一般握手發起數據包默認間隔為20毫秒/包,而設置預設時間間隔為4秒,因此如果超過4秒,則默認超時,在其他的實施例中,預設時間間隔可以為其他的時間,例如3秒、5秒、7秒等。在其中一個實施例中,與目標終端進行通信的步驟,即步驟S110可以包括:首先獲取待傳輸數據。具體地,該待傳輸數據可以仍以上述數據包的方式進行傳播,其可以設置在Extras字段中。其次將待傳輸數據依次通過第一局域網路由器、至少一個虛擬中轉路由器和第二局域網路由器發送到目標終端;其中,第二局域網路由器位于第二局域網中。在該實施例中,由于第一終端和第二終端之間的距離可能較遠,因此至少要通過一個虛擬中轉路由器才能將待傳輸數據發送到目標終端,例如可以是1個虛擬中轉路由器、3個虛擬中轉路由器、6個虛擬中轉路由器等。具體地,如圖4所示,圖4為一實施例中數據傳輸的傳輸路徑圖,第一終端和第二終端在握手成功后,兩個終端之間可進行無障礙的數據傳輸。第一終端獲取待傳輸數據,通過第一局域網路由器發送的到第一虛擬中轉路由器,然后通過第一虛擬中轉路由器發送到第二虛擬中轉路由器,一直發送到第N虛擬中轉路由器(N為大于等于2的正整數,第N虛擬中轉路由器與第二局域網路由器直接相連接),再由第N虛擬中轉路由器發送到第二局域網路由器,最后到達第二終端,第二終端根據發送來的數據執行相應的操作或動作。另外,如圖4中的虛線所示,第一終端和第二終端在握手成功后,兩個終端之間可進行無障礙的數據傳輸,第二終端獲取待傳輸數據,通過第二局域網路由器發送的到第N虛擬中轉路由器(N為大于等于2的正整數,第N虛擬中轉路由器與第二局域網路由器直接相連接),然后通過第N虛擬中轉路由器發送到第N-1虛擬中轉路由器,一直發送到第一虛擬中轉路由器,再由第一虛擬中轉路由器發送到第一局域網路由器,最后到達第一終端,第一終端根據發送來的數據執行相應的操作或動作。上述實施例中,在第一終端和第二終端握手成功后,第一終端和第二終端通過局域網路由器和虛擬中轉路由器實現高效、快速的實時穿透通信,不再依賴服務器作為信息中轉站。在其中一個實施例中,當與目標終端通信結束后,可以關閉與目標終端相通信的接口。上述方法可以是依賴UDP(UserDatagramProtocol,用戶數據包協議)和IPv4(是互聯網協議的第四版),API(ApplicationProgrammingInterface,應用程序編程接口)采用UnixTCPProgramming協議穿透(Tunnel)。在經過四次握手穿透成功連接后,斷開連接僅需要關閉UDPsocket,其操作簡單。另外,可以使用丟包率的統計方法來評價上述的數據傳輸方法的當前穿透會話的網絡信號的強度,例如使用Value字段來統計當前發送和接收的數據包的數量,例如當Value(step#n)中n為偶數,表示發起端發起在第n次會話時的計數值;同理Value(step#m)中m為奇數,表示接收端在第m次會話時的計數。在一個實施例中,假設第一終端會話中記錄發送數據包的數量req(對應于value字段),第一終端接收第二終端返回的數據包時,獲取Extras字段的值ack(由第二終端記錄收到的第一終端發送的Value字段值),如果第一終端沒有接收到回復,則記ack=0,從而丟包率可以表示為(req-ack)/req,因此對于上述數據傳輸方法的評估方法也較為簡單。請參閱圖5所示,圖5為一實施例中的數據傳輸裝置的示意圖,在該實施例中,該裝置可以包括:自身地址獲取模塊100,用于在接入第一局域網后獲取自身的外網IP地址。注冊模塊200,用于向服務器發送所獲取的自身的外網IP地址和自身的終端標識符,且從服務器獲取與服務器相連接的所有終端的外網IP地址和終端標識符。目標地址獲取模塊300,用于根據終端標識符,從與服務器相連接的終端的外網IP地址中查詢目標終端的外網IP地址;目標終端處于第二局域網中。握手模塊400,用于根據目標終端的外網IP地址與目標終端進行握手。通信模塊500,用于在握手成功后,與目標終端進行數據傳輸。在其中一個實施例中,注冊模塊200還可以用于將自身的外網IP地址和自身的終端標識符依次通過第一局域網路由器、虛擬中轉路由器發送到服務器;第一局域網路由器位于第一局域網中。在其中一個實施例中,握手模塊400可以包括:第一發送單元,用于根據目標終端的外網IP地址,通過局域網路由器和虛擬中轉路由器,向目標終端發送第一數據包,該第一數據包的Session字段的值為第一預設值。第一接收單元,用于接收目標終端所返回的與第一數據包相對應的第二數據包。第二發送單元,用于當第二數據包的Session字段的值為第二預設值時,向目標終端發送第三數據包,該第三數據包的Session字段的值為第三預設值。第二接收單元,用于接收目標終端所返回的與第三數據包相對應的第四數據包。輸出單元,用于在該第四數據包的Session字段的值為第四預設值時,輸出與目標終端握手成功的結果。在其中一個實施例中,握手模塊400還可以包括:超時單元,用于在向目標終端發送第一數據包或第三數據包后,在預設時間間隔內未接收到來自目標終端的數據包時,返回連接超時的結果。在其中一個實施例中,通信模塊500可以包括:數據獲取單元,用于獲取待傳輸數據;第三發送單元,用于將待傳輸數據依次通過第一局域網路由器、至少一個虛擬中轉路由器和第二局域網路由器發送到目標終端;其中,第二局域網路由器位于第二局域網中。上述實施例中所涉及的裝置的具體內容可以參見上述對方法的限定,在此不再贅述。以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬于本發明的保護范圍。因此,本發明專利的保護范圍應以所附權利要求為準。當前第1頁1 2 3 
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 邢台市| 汝州市| 凉山| 库车县| 伊吾县| 通江县| 望奎县| 互助| 文水县| 巴塘县| 城固县| 新竹县| 西和县| 和平县| 定日县| 五指山市| 太仓市| 南木林县| 长海县| 南漳县| 密云县| 合阳县| 胶州市| 克山县| 措勤县| 象州县| 沈阳市| 枣庄市| 肇州县| 铅山县| 义马市| 利辛县| 正宁县| 巴南区| 鹤庆县| 澳门| 惠东县| 平顺县| 金堂县| 右玉县| 禄劝|