【发布时间】:2012-04-11 23:10:03
【问题描述】:
在过去的几天里,我一直在开发一款在线游戏,这是一款 2 人游戏,其中一个人启动服务器(侦听某个端口),另一个人通过输入他的 IP 连接到他。这种方法有两个问题:
- 输入对方IP很不舒服。
- 服务器不得位于路由器后面,因为 NAT 会阻止它工作。
第一个问题可以通过匹配服务来解决,该服务会在用户不关心的情况下处理所寻址的 IP。但我不确定如何解决第二个问题。我已经阅读了有关“TCP 打孔”的信息,但根据我所阅读的内容,当两个玩家都在路由器后面时,不可能执行此操作。如果这是真的,那么像 Halo 3 这样的匹配服务游戏(其中一名玩家是主机)如何运作?
提前致谢。
【问题讨论】:
-
这个问题在GameDev.SE 上会更热门吗?
-
@raveturned - 适用于非游戏开发程序员,我宁愿看到它留在这里。
-
@raveturned,我想过,但这个主题是关于建立连接,而不是通过它进行通信。它也不关心游戏本身。所以这基本上是一个关于网络的问题,而不是任何特定的游戏开发过程。
-
对 uPNP 做一些研究。现在大多数路由器都支持这一点。
标签: c# tcp nat hole-punching