首页 > 解决方案 > C# .Net 10054 UDP 异常?原因,解决?

问题描述

我的服务器/客户端交互反复出现问题。每 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}");
        }
    }

我已经尝试了一些不同的方法来尝试修复它,但大多数时候最终会变得更糟。坦率地说,我不明白这个异常是什么意思或为什么会导致,这使得修复错误变得更加困难。我希望能深入了解此异常的来源以及如何修复它。

谢谢!

标签: c#.netexceptionnetwork-programming

解决方案


推荐阅读