我的服务器/客户端交互反复出现问题。每 15-20 次断开连接(有时更多或更少,频繁)我的服务器将注册一个 10054 异常。发生这种情况时,服务器会卡住并必须重新启动,这真的很烦人。
异常总是发生在这个代码块的第 6 行(从“byte[] data =”开始):
private static void UDPReceiveCallback(IAsyncResult result)
{
try
{
IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpListener.EndReceive(result, ref clientEndPoint);
udpListener.BeginReceive(UDPReceiveCallback, null);
if(data.Length<4)
{
return;
}
using(Packet packet = new Packet(data))
{
int clientID = packet.ReadInt();
if(clientID == 0)
{
return;
}
if(clients[clientID].udp.endPoint == null)
{
clients[clientID].udp.Connect(clientEndPoint);
return;
}
if(clients[clientID].udp.endPoint.ToString() == clientEndPoint.ToString())
{
clients[clientID].udp.HandleData(packet);
}
}
}
catch(Exception ex)
{
Console.WriteLine($"Error receiving UDP data: {ex}");
}
}
我已经尝试了一些不同的方法来尝试修复它,但大多数时候最终会变得更糟。坦率地说,我不明白这个异常是什么意思或为什么会导致,这使得修复错误变得更加困难。我希望能深入了解此异常的来源以及如何修复它。
谢谢!