0
我最近試圖建立一個簡單的對等網絡。在我的概念中,同伴嘗試使用第三方「引導」對等源來打開端口並與儘可能多的對等端建立連接以找到對等端。我很快發現一個問題:如何確保對等連接不會加倍(服務器 - >客戶端,客戶端 - >服務器)?
- 同行一個開放的端口6013,並宣佈他的存在
- 同行B打開一個端口31235,並宣佈他的存在
- 節點A接收到B的公告,並連接到對等體B使用3111作爲它的源端口
- 對等體B接收A的公告,並連接到對等體B,使用7777作爲它的源端口
此時我們既是連接到B上的服務器套接字nd B連接到A的服務器套接字,但沒有辦法確定它們實際上是相互通信的主機 - 客戶端連接的源端口不建議它們打開哪個服務器端口。而且,我不能通過他們的IP地址來識別對等點,因爲他們可能在某種NAT後面。
我能做些什麼來避免這種情況?在我的情況下,加倍連接不應該導致解除同步問題,但這種冗餘可能會導致我不想要的開銷。
謝謝,聽起來像一個很好的解決方案! – d33tah 2013-04-26 16:49:17