NAT Traversal 仅使用 C# 中的免费 STUN 和 TURN 服务器

Posted

技术标签:

【中文标题】NAT Traversal 仅使用 C# 中的免费 STUN 和 TURN 服务器【英文标题】:NAT Traversal using only free STUN and TURN servers in C# 【发布时间】:2014-06-20 19:35:15 【问题描述】:

我正在尝试制作一个在线游戏应用程序,该应用程序通过 Internet 与另一台 PC 进行点对点通信。 由于两台电脑都可能在NAT下,而且我买不起外部服务器,我认为唯一的方法是使用免费的STUN和TURN服务器,例如Numb。

但是,经过一些研究,我无法弄清楚如何使用这些服务器进行连接。

真的可以只使用那些服务器来完成吗?如果是,你会怎么做? 或者有更简单的方法吗?

我可以为此使用 UDP 或 TCP。

【问题讨论】:

【参考方案1】:

看看Internet Gateway Device Protocol。 Is 是 UPNP 协议的扩展,非常易于使用,几乎所有路由器都支持它,并且有一些免费的库实现了该协议。

【讨论】:

谢谢!!我还没有尝试过,但它看起来像我想要的! @eivour 欢迎您!如果它真的回答了您的问题,请考虑接受答案。好编码! 好吧,我尝试了类型库,但它对我不起作用...... UPnPNATClass.StaticPortMappingCollection 不知何故返回了 null,我无法向它添加新端口。我检查了路由器中的UPnP选项是否打开,并且windows允许网络发现,所以我认为UPnP可用。 @eivour 要么你刚刚在库中发现了一个错误,要么你错过了文档中的一些细节。你在使用哪个库?尽管知道它是什么以及何时使用它,但我以前从未使用过 UPnP,但我会尽力为您提供帮助。 要么您的路由器不完全兼容,要么需要重新启动:我看到一些路由器(特别是 D-Link 路由器)需要重新启动或需要禁用/启用UPNP 功能以使其正常工作。如果示例应用程序也不起作用,我相信这不是 API 本身的问题。

以上是关于NAT Traversal 仅使用 C# 中的免费 STUN 和 TURN 服务器的主要内容,如果未能解决你的问题,请参考以下文章

STUN(Session Traversal Utilities for NAT) 与 TURN(Traversal Using Relays around NAT)

使用免费的 c# 解决方案将 pdf 转换为 jpeg [关闭]

C#解leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal

可靠(加密)方式验证NAT后面的设备公共IP地址

nat123学习笔记

Http隧道通过C#(TCP)中的防火墙