1

我为必须能够在 P2P 中运行的游戏制作了一个远程引擎。

它在局域网中完美运行,但是当计算机位于路由器后面并希望通过互联网进行通信时就会出现问题。

有什么解决方案,不需要操作路由器配置?因为我的大多数游戏玩家可能在信息方面不太受认可,所以我想尽可能轻松地解决这个问题,而不需要他们的任何干预。

谢谢,

风筝。

4

2 回答 2

4

您需要路由器后面的客户端来启动 OUTGOING 连接。一旦建立,您就可以进行 2 路通信。这就是为什么大多数 P2P 游戏都有某种服务器来设置客户端之间的匹配。您可以让每个客户端建立一个到服务器的套接字,然后将它们相互连接。

不久前有一种称为“NAT 打孔”的替代方法,但我不确定它有多可靠。

这就是 LogMeIn 与 VNC 的不同之处。

于 2009-10-21T18:12:39.187 回答
1

如今,几乎所有家庭用户都使用某种形式的NAT,这使得在实践中无法建立真正的点对点通信,因为应用程序侦听端口无法从网络访问。

理论上,UPnP允许应用程序(在提升的权限下运行)在家庭路由器上(通过Internet 网关设备协议)动态启用端口转发,但实际上这非常不可靠,我还没有看到它的任何实际用途。

最可靠的解决方案是拥有一个中央集线器(您的游戏服务器),它在客户端之间转发数据包,从 NAT 设备后面发起连接。但这对您来说是一笔巨大的成本,因为您需要兑现配置和运营此集线器的成本,即使使用 EC2 等动态即时解决方案也是如此。

更新

也许您可以使用 Codeplex UPnP NAT 遍历项目

于 2009-10-21T18:26:19.877 回答