2014-04-28 105 views
0

我已經搜索了互聯網上關於使用C#和STUN遍歷NAT的所有大多數鏈接。我獲得了公共IP和應用程序使用的端口。在我讀過的有關STUN的大多數網頁上,這個協議應該可以幫助我連接到NAT-Router或防火牆後面的另一個客戶端。現在我的問題是......如果我理解STUN,STUN只是在那裏給我公開的IP地址和我的NAT的特徵。與STUN的C#RDP應用程序

但是我怎樣才能將這些信息連接到另一個客戶端?

這裏是我曾經跟我的應用程序配置STUN http://www.codeproject.com/Articles/18492/STUN-Client

+0

你有什麼特別的嘗試?發佈一些代碼示例和一個具體問題。 – Ashigore

+0

什麼是很難閱讀STUN規範和 - 啊 - 執行它們? STUN是一種算法。很顯然,「我通過例子工作,而不是通過閱讀規範」從長遠來看不會有多大幫助。 – TomTom

+0

這是我第一次使用RDP和暈眩的經歷..我很難理解這個概念。我有一個關於NAT的想法以及它是如何工作的。問題在於我需要運行STUN服務器以及如何使用客戶端公共IP和端口進行初始握手。以及如何保持連接存活 – Sandaru

回答

2

下面的例子中,C#實現:

http://www.codeproject.com/Articles/18492/STUN-Client

示例用法:

// Create new socket for STUN client. 
Socket socket = new Socket 
    (AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); 
socket.Bind(new IPEndPoint(IPAddress.Any,0)); 

// Query STUN server 
STUN_Result result = STUN_Client.Query("stunserver.org",3478,socket); 
if(result.NetType != STUN_NetType.UdpBlocked){ 
    // UDP blocked or !!!! bad STUN server 
} 
else{ 
    IPEndPoint publicEP = result.PublicEndPoint; 
    // Do your stuff 
} 
+0

感謝您的幫助 – Sandaru

+1

@jgauffin 它給我UdpBlocked所有時間...請幫助 –

+1

嘗試另一個stun服務器或打開防火牆 – jgauffin