c# - 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}");
}
}
我已经尝试了一些不同的方法来尝试修复它,但大多数时候最终会变得更糟。坦率地说,我不明白这个异常是什么意思或为什么会导致,这使得修复错误变得更加困难。我希望能深入了解此异常的来源以及如何修复它。
谢谢!
解决方案
推荐阅读
- node.js - 使用 Node.js Web 服务器返回异步操作的结果
- swift - SceneDelegate 的导航控制器问题
- neo4j - 获取具有电影和角色的演员
- java - Spring JPA 存储库使用@IdClass
- python - 如何将 pandas 中的每一行转换为 np 数组?
- r - 当不是 1 时,列表对象的长度在 R 中返回 1
- node.js - Sequelize docker连接被拒绝
- c# - 查看单元格数据以执行格式化时出现互操作异常
- javascript - 停止值在 javascript 中变为负数
- python - 如何在 Django 聚合查询的 GROUP BY 子句中正确包含列?