簡體   English   中英

直接P2P連接

[英]Direct P2P connection

本主題類似於此主題

我對網絡編程這個話題比較陌生,在一台本地機器上從來沒有做過基本的TCP / UDP。 現在我正在開發一個需要P2P網絡支持的應用程序。 更具體地說,我將需要應用程序通過互聯網連接和通信,優選地不使用服務器來進行客戶端之間的匹配。

我知道並假設幾乎所有用戶都在路由器后面,這使得流程變得復雜,因為兩個客戶端都無法初始化到另一個的直接連接。

我知道UPnP是允許端口轉發的選項,無需用戶手動配置,但截至目前,這不是一個選項。 他們有什么辦法實現我的目標,還是我需要那台服務器?

你需要一台服務器來交換IP地址等。 正如另一個線程字面上指出的那樣,保證連接的唯一方法是通過服務器進行代理。 大多數對等系統使用UPnPNAT Hole Punching (此方法需要服務器中繼端口信息,僅適用於UDP)在大多數情況下建立連接。

NAT Hole Punching由兩個客戶端建立與服務器的連接工作,然后兩者都嘗試直接連接到另一個端口轉發到另一個端口。 大多數UDP NAT會在短時間內記住IP地址和端口,因此雖然數據永遠不會到達另一端(不是這對UDP很重要),但是其他客戶端會嘗試稍后連接到該報告作為NAT期待回復。

使用WCF查看P2P頻道: http//msdn.microsoft.com/en-us/library/cc297274.aspx

它運作得很好。

忽略UPnP(不幸的是,它只適用於某些路由器),而且沒有中央服務器,我不確定當兩個用戶都在NAT后面時創建直接連接是可能的。

為了避免服務器“匹配”,你可以做skype做的事情,並建立一些對等設備作為NAT后面的其他人的中繼。 您將始終需要某種啟動捆綁機制,因此集中式服務器可能會以某種方式進入您的系統(當然,取決於您的開發)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM