我正在做一種p2p通訊軟體,用的是UDP協議。原理是這樣的:
A和B分別登錄到服務器S,由于A和B都是處在內網中,登錄服務器時,會把內網IP和埠映射成外網IP和埠。
然后S再把A和B的地址和埠(經過A和B的路由器映射后的外網IP和埠)互相發給對方,然后A和B互相向對方的IP和埠發送資料,一秒鐘發一次,直到收到對方的資料,就算是聯系上了,就停止。
可是我發現:結果是:A和B永遠也收不到對方的資料,發確實是發的,一秒鐘向對方發一次(對方的經過路由器映射的外網IP和埠),但是永遠收不到對方的資料,互相收不到。
問題出在哪兒呢?我發的資料簡單,就十幾個位元組。而且只向對方的經過路由器映射后的外網IP和埠發送,不向它的原來的內網IP和埠發送(這樣對嗎?)
我的兩臺電腦,就是通訊的雙方:A和B,一個是用屋內的路由器經過寬帶上網接入因特網的,一個是手機4G上網做熱點,然后電腦連到這個手機熱點上上網的,這時,手機就起到一個路由器的作用吧?
這里面哪里出了問題?為什么收不到對方的資料?(一秒鐘發一次,其實發一次后,就等于打好洞了,對方的資料就應該能接收了。可是一直收不到)。
uj5u.com熱心網友回復:
我在想:難道我的通訊的兩臺電腦,一個是屋內路由器經寬帶上網,一個是用手機作熱點上網。這兩個路由器中,難道有一個是所謂的“對稱型NAT”?如果是這樣,就確實無法穿透成功了。可是這種路由器NAT型別應該很少吧?uj5u.com熱心網友回復:
好了,穿透不成功的原因我自己找到了。我下載了一個檢測NAT型別的軟體,發現用手機4G開熱點,電腦連上熱點上網的那個,路由器的NAT型別是Symmetric型,也就是對稱型。這種路由器是無法穿透成功了。
用屋內路由器接入寬帶上網的那個,NAT型別是Port Restricted Cone型,這種型別,如果A和B都是這種型別,還是可以穿透成功的,可是一個是Symmetric型,一個是Port Restricted Cone型,就不可能穿透成功了。
可是我想問:如果生活中,這種Symmetric型的路由器過多,那p2p通訊豈不是大大受到限制?成功率大大降低?
uj5u.com熱心網友回復:
來人接分。。uj5u.com熱心網友回復:
幫結帖+蹭分uj5u.com熱心網友回復:
那就需要服務器轉發了uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
我目前也在看這方面的東西,也是直接遇到對稱型nat,怎么都打不通。目前正在根據網上說的埠猜測方法試試,但是據說效率很低,成功率也不高。大家有好的想法互相學習一下!uj5u.com熱心網友回復:
skype是怎樣穿透成功的?它可是經常在手機上使用,而手機上大多是對稱型的。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/134085.html
標籤:網絡編程
