gpt4 book ai didi

c# - Lidgren 第二次创建服务器实例导致 System.Net.Sockets.SocketException

转载 作者:行者123 更新时间:2023-12-03 11:50:24 25 4
gpt4 key购买 nike

我在 Monogame 中使用 Lidgren。玩家有可能想要主持一场比赛,然后离开大厅,并想再次主持。但是,当我在代码中执行此操作时,会引发以下异常:System.Net.Sockets.SocketException: 'Only one usage of each socket address (protocol/network address/port) is normally permitted'

相关代码:

// 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() 绑定(bind)套接字时崩溃。(m_socket.Bind())。

如何清理服务器/套接字以便我可以第二次创建服务器的新实例?

最佳答案

造成这种情况的原因是先前服务器的实例不正确关闭,这意味着该端口仍在被该实例使用。似乎是一个错误,内部清理工作不正常 https://github.com/lidgren/lidgren-network-gen3/issues/94 https://github.com/lidgren/lidgren-network-gen3/issues/94#issuecomment-369561026但是它已修复,因此请务必使用最新版本的 lidgren-network https://github.com/RevoluPowered/lidgren-network/tree/feature/socket-overhaul

您可以使用 _server.Socket.Close(); 只是为了确保套接字在启动另一个服务器或实例之前关闭。

关于c# - Lidgren 第二次创建服务器实例导致 System.Net.Sockets.SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62795248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com