0

我已经搜索了互联网上所有关于使用 C# 和 STUN 进行 NAT 遍历的所有链接。我得到了应用程序使用的公共 IP 和端口。在我读过的大多数网页上,STUN 是一种协议,它应该可以帮助我连接到 NAT 路由器或防火墙后面的另一个客户端。现在我的问题......如果我理解 STUN,STUN 只是为了给我公共 IP 地址和我的 NAT 的特征。

但是,我怎样才能将这些信息连接到另一个客户呢?

这是我用我的应用程序配置 STUN 的示例 http://www.codeproject.com/Articles/18492/STUN-Client

4

2 回答 2

2

您可以尝试使用http://en.wikipedia.org/wiki/UDP_hole_punching它非常简单且易于实现

于 2014-04-28T11:21:48.600 回答
2

这是 ac# 实现:

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
}
于 2014-04-28T11:30:23.117 回答