我对网络相当陌生,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代码,所以我不知道为什么会这样。
发布于 2014-07-01 07:32:27
不幸的是,UPnP协议规范没有在大量的家庭路由器上正确地实现。其结果是,所有UPnP框架(甚至英特尔规范框架)都无法与某些本地路由器正确地通信UPnP。
您应该会发现,并不是所有的朋友路由器都会成功地打开您请求的端口。您所能做的最好的就是确保您的代码没有与您正在使用的UPnP框架相关的失败场景和不明确的异常,并且您已经很好地记录了失败UPnP的用户如何手动为您的游戏设置端口。
https://stackoverflow.com/questions/24444424
复制相似问题