我最近一直在用 C#/XNA 开发一款联网游戏,虽然我们只涉及静态 IP,但联网本身运行得相当顺利。现在的情况是:
我的电脑位于家庭路由器(我可以完全控制它并使用 DHCP)后面,而这个路由器/子网位于(可能是)公司路由器后面,因为我通过 DHCP 获取我的 WAN IP。
我该如何通过互联网引用/访问我的计算机?比如说,使用 UdpClient.Send() 函数(它只接受 IPAddress 和 Port 作为数据旁边的 IPEndpoint)?或者这根本不可能,我必须创建一个虚拟网络才能直接引用计算机?
(使用 dhcp-d WAN 地址没有成功,而且我对公司的路由器完全没有控制权。)
答案1
如果您可以通过外部 IP 访问(例如 ping 通)家庭路由器并且:
- 如果您使用 NAT,则需要在路由器上启用端口转发功能,以便将端口转发到 PC 的 IP。您可能希望为此为 PC 提供一个静态 IP。或者在 DHCPd 中为其 MAC 地址创建一个条目,以便它在发出 DHCP 请求时始终获得相同的 IP。
- 如果你家里有自己的 IP 管理员,那么就不需要 NAT,你只需能够访问 PC 即可除非您已配置防火墙来阻止访问。
至于公司路由器。那应该没关系。只要你能在互联网上访问任意一台 PC,那么它也应该适用于你的家庭网络。