我对网络很新,而且lidgren让我更容易开始为我的XNA PC游戏添加多人游戏功能。我一直在网络上测试我的笔记本电脑就在我旁边,它一直很好用。问题是我将我的游戏副本发送给荷兰的一位朋友,她无法与我联系。我将它设置为一个人是主持人,其他人是连接到该主机的客户。
主机按如下方式设置服务器:
Config = new NetPeerConfiguration("game");
Config.Port = 14242;
Config.EnableUPnP = true;
Config.MaximumConnections = 3;
Config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
Server = new NetServer(Config);
Server.Start();
Server.UPnP.ForwardPort(14242, "Forlorn Forest");
这是ForwardPort失败时抛出的异常并给出“错误请求”:
抛出两个Web异常:
它说明了远程主机关闭的连接,无法在异常详细信息中从传输连接中读取数据:
有关这里可能会发生什么的任何想法?我的路由器上启用了UPnP。我已经看过WireShark的网络流量了,我可以看到它显示格式错误的数据包,虽然我没有弄乱任何Lidgren代码,所以我不知道为什么会这样。
答案 0 :(得分:2)
遗憾的是,UPnP协议规范未在大量家庭路由器上正确实施。这样做的结果是所有UPnP框架(甚至英特尔规范框架)都无法正确地与一些本地路由器通信UPnP。
您应该会发现并非所有朋友路由器都能成功打开您请求的端口。您可以做的最好的事情是确保您的代码没有与您正在使用的UPnP框架相关的故障情况和未捕获的异常,并且您已经详细记录了UPnP失败的用户如何为您的游戏手动设置端口转发。