【发布时间】:2020-07-08 12:51:29
【问题描述】:
我在 Monogame 中使用 Lidgren。 玩家有可能想要主持一场比赛,然后离开大厅,并想再次主持。但是,当我在我的代码中执行此操作时,会引发以下异常:System.Net.Sockets.SocketException: '每个套接字地址(协议/网络地址/端口)通常只允许使用一次'
相关代码:
// initializing the server
NetPeerConfiguration _config = new NetPeerConfiguration("some app id");
// code to enable certain messages.
_server = new NetServer(_config);
_server.Start();
// cleaning up the server instance
_server.Shutdown("server shutdown");
_server = null;
代码在_server.Start() 处因绑定套接字而崩溃。(m_socket.Bind())。
如何清理服务器/套接字,以便再次创建服务器的新实例?
【问题讨论】:
-
还有其他人遇到这个问题吗?有 40 次观看,并且(此时)有两个赞成票..
-
我认为正在发生的事情是,您每次播放器想要托管时都在重新创建服务器,因此它不会记住您已经绑定了端口。然后它试图再次绑定端口,所以它失败了。我认为你应该尝试只调用一次
new NetServer,就像在构造函数中一样 - 并删除_server = null。然后仅使用_server.Start();和_server.Shutdown("...")打开和关闭服务器。 -
让我想想这是否有助于解决您的问题,如何使用线程一次并行处理多个请求。
标签: c# sockets monogame lidgren