[0032]圖2是本發(fā)明一種P2P連接NAT穿越的路徑的建立方法的完整步驟示意圖。對上述實施例進(jìn)行改進(jìn),得到另一種P2P連接NAT穿越的路徑的建立方法,與另一個對等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個所述候選地址設(shè)置優(yōu)先級,發(fā)送包括候選地址和優(yōu)先級的配對信息至另一個對等網(wǎng)絡(luò)客戶端;S02接收另一個對等網(wǎng)絡(luò)客戶端的配對信息,所述另一個對等網(wǎng)絡(luò)客戶端的配對信息包括另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級;S03結(jié)合本客戶端與另一個對等網(wǎng)絡(luò)客戶端的配對信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級以及另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級進(jìn)行配對生成地址對,并按照與另一個對等網(wǎng)絡(luò)客戶端相同的地址對優(yōu)先級算法對所述地址對進(jìn)行排序,生成待檢查地址對清單;S10選擇待檢查地址對清單中尚未檢查的優(yōu)先級最高的地址對作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請求報文;S30監(jiān)聽本客戶端NAT主機(jī);S40判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對為最優(yōu)路徑;S60停止檢查循環(huán)。
[0033]可選的,所述候選地址包括候選地址的IP地址、發(fā)送端口與接收端口。
[0034]對上述實施例進(jìn)行改進(jìn),得到另一種P2P連接NAT穿越的路徑的建立方法,與另一個對等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S10選擇待檢查地址對清單中尚未檢查的優(yōu)先級最高的地址對作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請求報文;S30監(jiān)聽本客戶端NAT主機(jī);S40判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對為最優(yōu)路徑,并執(zhí)行步驟S60停止檢查循環(huán);否則,S351判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查請求報文;若是,執(zhí)行下一步;S352向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報文;否則,S451當(dāng)未監(jiān)聽到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文或路徑檢查請求報文時,進(jìn)一步判斷當(dāng)前地址對的路徑檢查請求是否超時,若是,執(zhí)行下一步;否則,重復(fù)執(zhí)行步驟S30 ;S452判斷所有待檢查地址對是否檢查完畢,若是,則執(zhí)行步驟S60停止檢查循環(huán),否則重復(fù)執(zhí)行步驟S10。
[0035]每次設(shè)置socket監(jiān)聽待檢查地址對的兩個端口,這樣就能同時處理一對地址的檢查。
[0036]對上述實施例進(jìn)行改進(jìn),得到另一種P2P連接NAT穿越的路徑的建立方法,與另一個對等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個所述候選地址設(shè)置優(yōu)先級,發(fā)送包括候選地址和優(yōu)先級的配對信息至另一個對等網(wǎng)絡(luò)客戶端;S02接收另一個對等網(wǎng)絡(luò)客戶端的配對信息,所述另一個對等網(wǎng)絡(luò)客戶端的配對信息包括另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級;S03結(jié)合本客戶端與另一個對等網(wǎng)絡(luò)客戶端的配對信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級以及另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級進(jìn)行配對生成地址對,并按照與另一個對等網(wǎng)絡(luò)客戶端相同的地址對優(yōu)先級算法對所述地址對進(jìn)行排序,生成待檢查地址對清單;S10選擇待檢查地址對清單中尚未檢查的優(yōu)先級最高的地址對作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請求報文;S30監(jiān)聽本客戶端NAT主機(jī);S40判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對為最優(yōu)路徑,并執(zhí)行步驟S60停止檢查循環(huán);否則,S351判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查請求報文;若是,執(zhí)行下一步;S352向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報文;否則,S451當(dāng)未監(jiān)聽到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文或路徑檢查請求報文時,進(jìn)一步判斷當(dāng)前地址對的路徑檢查請求是否超時,若是,執(zhí)行下一步;否則,重復(fù)執(zhí)行步驟S30 ;S452判斷所有待檢查地址對是否檢查完畢,若是,則執(zhí)行步驟S60停止檢查循環(huán),否則重復(fù)執(zhí)行步驟SlOo
[0037]本發(fā)明還提供另一種P2P連接NAT穿越的路徑的建立方法,與另一個對等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個所述候選地址設(shè)置優(yōu)先級,發(fā)送包括候選地址和優(yōu)先級的配對信息至另一個對等網(wǎng)絡(luò)客戶端;S02接收另一個對等網(wǎng)絡(luò)客戶端的配對信息,所述另一個對等網(wǎng)絡(luò)客戶端的配對信息包括另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級;S03結(jié)合本客戶端與另一個對等網(wǎng)絡(luò)客戶端的配對信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級以及另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級進(jìn)行配對生成地址對,并按照與另一個對等網(wǎng)絡(luò)客戶端相同的地址對優(yōu)先級算法對所述地址對進(jìn)行排序,生成待檢查地址對清單;S10選擇待檢查地址對清單中尚未檢查的優(yōu)先級最高的地址對作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請求報文;S30監(jiān)聽本客戶端NAT主機(jī);S351判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查請求報文;若是,執(zhí)行步驟S352 ;S352向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報文;否則,執(zhí)行步驟S40 ;S40判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文;若是,執(zhí)行步驟S50 ;S50設(shè)定當(dāng)前地址對為最優(yōu)路徑,并執(zhí)行步驟S60停止檢查循環(huán);否則,執(zhí)行步驟S451 ;步驟S451當(dāng)未監(jiān)聽到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文或路徑檢查請求報文時,進(jìn)一步判斷當(dāng)前地址對的路徑檢查請求是否超時,若是,執(zhí)行步驟S452 ;否貝1J,重復(fù)執(zhí)行步驟S30 ;S452判斷所有待檢查地址對是否檢查完畢,若是,則執(zhí)行步驟S60停止檢查循環(huán),否則重復(fù)執(zhí)行步驟S10。
[0038]對上述實施例進(jìn)行改進(jìn),得到另一種P2P連接NAT穿越的路徑的建立方法,與另一個對等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個所述候選地址設(shè)置優(yōu)先級,發(fā)送包括候選地址和優(yōu)先級的配對信息至另一個對等網(wǎng)絡(luò)客戶端;S02接收另一個對等網(wǎng)絡(luò)客戶端的配對信息,所述另一個對等網(wǎng)絡(luò)客戶端的配對信息包括另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級;S03結(jié)合本客戶端與另一個對等網(wǎng)絡(luò)客戶端的配對信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級以及另一個對等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級進(jìn)行配對生成地址對,并按照與另一個對等網(wǎng)絡(luò)客戶端相同的地址對優(yōu)先級算法對所述地址對進(jìn)行排序,生成待檢查地址對清單;S10選擇待檢查地址對清單中尚未檢查的優(yōu)先級最高的地址對作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請求報文;S30監(jiān)聽本客戶端NAT主機(jī)是否接收到UDP報文;當(dāng)本客戶端NAT主機(jī)接收到UDP報文時,根據(jù)當(dāng)前檢查的路徑,判斷UDP報文中的源地址與本客戶端當(dāng)前檢查的路徑是否一致;當(dāng)UDP報文中的源地址與當(dāng)前檢查的路徑一致時,執(zhí)行步驟S351 ;S40判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對為最優(yōu)路徑,并執(zhí)行步驟S60停止檢查循環(huán);S351判斷是否接收到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查請求報文;若是,執(zhí)行下一步;S352向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報文;S451當(dāng)未監(jiān)聽到另一個對等網(wǎng)絡(luò)客戶端發(fā)送來的路徑檢查應(yīng)答報文或路徑檢查請求報文時,進(jìn)一步判斷當(dāng)前地址對的路徑檢查請求是否超時,若是,執(zhí)行下一步;否則重復(fù)執(zhí)行步驟S30 ;S452判斷所有待檢查地址對是否檢查完畢,若是,則執(zhí)行步驟S60停止檢查循環(huán),否則重復(fù)執(zhí)行步驟S10。
[0039]圖3為本發(fā)明一種P2P連接NAT穿越的路徑的建立方法的流程圖。如圖3所示:
[0040]開始;
[0041]S10選擇待檢查地址對清單中尚未檢查的優(yōu)先級最高的地址對作為當(dāng)前檢查的路徑。
[0042]S20根據(jù)當(dāng)前檢查的路徑,向另一個對等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請求報文。
[0043]S30監(jiān)聽本客戶端NAT主機(jī)。
[0044]S351判斷是否接收到路徑檢查請求報文;若是,則執(zhí)行步驟S352發(fā)送路徑檢查應(yīng)答報文;否則執(zhí)行下一步。
[0045]S40判斷是否接收到路徑檢查應(yīng)答報文;若是,則執(zhí)行步驟S50,并執(zhí)行步驟S60 ;否則,執(zhí)行步驟S451。
[0046]S451判斷當(dāng)前地址對的路徑檢查請求是否超時;若是,則執(zhí)行步驟S452 ;否則重復(fù)執(zhí)行步驟S30。
[0047]S452判斷所有待檢查地址對是否檢查完畢;若是,則執(zhí)行步驟S60停止檢查循環(huán);否則,重復(fù)執(zhí)行步驟S10。
[0048]S50設(shè)定當(dāng)前地址對為最優(yōu)路徑。
[0049]S60停止檢