From b139542c4ccae121d37e3d96e10cdffe7e4f4e99 Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Tue, 15 Jul 2025 16:36:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E4=BA=92=E6=96=A5?= =?UTF-8?q?=E9=94=81=EF=BC=8C=E5=B9=B6=E5=A2=9E=E5=8A=A0=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?log=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/UdpServer.cs | 58 +++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/server/src/UdpServer.cs b/server/src/UdpServer.cs index 6a53141..6e8eeca 100644 --- a/server/src/UdpServer.cs +++ b/server/src/UdpServer.cs @@ -155,11 +155,14 @@ public class UDPServer isTimeout = elapsed >= TimeSpan.FromMilliseconds(timeout); if (isTimeout) break; - if (udpData.TryGetValue($"{ipAddr}-{taskID}", out var dataQueue) && - dataQueue.TryDequeue(out data)) + lock (udpData) { - // logger.Debug($"Find UDP Data: {data.ToString()}"); - break; + if (udpData.TryGetValue($"{ipAddr}-{taskID}", out var dataQueue) && + dataQueue.TryDequeue(out data)) + { + // logger.Debug($"Find UDP Data: {data.ToString()}"); + break; + } } await Task.Delay(cycle); @@ -195,15 +198,18 @@ public class UDPServer isTimeout = elapsed >= TimeSpan.FromMilliseconds(timeout); if (isTimeout) break; - if (udpData.TryGetValue($"{ipAddr}-{taskID}", out var dataQueue) && - !dataQueue.IsEmpty) + lock (udpData) { - data = new List(); - while (dataQueue.TryDequeue(out var item)) + if (udpData.TryGetValue($"{ipAddr}-{taskID}", out var dataQueue) && + !dataQueue.IsEmpty) { - data.Add(item); + data = new List(); + while (dataQueue.TryDequeue(out var item)) + { + data.Add(item); + } + break; } - break; } } @@ -360,7 +366,7 @@ public class UDPServer } var udpDataObj = RecordUDPData(data, endPoint, time, Convert.ToInt32(data[1])); - PrintData(udpDataObj); + // PrintData(udpDataObj); }); } @@ -378,15 +384,22 @@ public class UDPServer HasRead = false, }; - var key = $"{remoteAddress}-{taskID}"; - var dataQueue = udpData.GetOrAdd(key, _ => new ConcurrentQueue()); - dataQueue.Enqueue(data); - // 对队列进行一次按时间排序 - var sorted = dataQueue.OrderBy(d => d.DateTime).ToList(); - udpData.TryUpdate(key, new ConcurrentQueue(sorted), dataQueue); + lock (udpData) + { + var key = $"{remoteAddress}-{taskID}"; + var dataQueue = udpData.GetOrAdd(key, _ => new ConcurrentQueue()); + dataQueue.Enqueue(data); - logger.Debug($"Test dataQueue.Count = {udpData[key].Count}"); + // 对队列进行一次按时间排序 + if (dataQueue.Count > 0) + { + var sorted = dataQueue.OrderBy(d => d.DateTime).ToList(); + udpData.TryUpdate(key, new ConcurrentQueue(sorted), dataQueue); + } + + PrintAllData(); + } return data; } @@ -395,7 +408,7 @@ public class UDPServer /// 输出UDP Data到log中 /// /// UDP数据 - public void PrintData(UDPData data) + public string PrintData(UDPData data) { var bytes = data.Data; var sign = bytes[0]; @@ -433,6 +446,11 @@ public class UDPServer // logger.Debug($"Receive Data from {data.Address}:{data.Port} at {data.DateTime.ToString()}:"); // logger.Debug($" Original Data : {BitConverter.ToString(bytes).Replace("-", " ")}"); // if (recvData.Length != 0) logger.Debug($" Decoded Data : {recvData}"); + return $@" + Receive Data from {data.Address}:{data.Port} at {data.DateTime.ToString()}: + Original Data : {BitConverter.ToString(bytes).Replace("-", " ")} + Decoded Data : {recvData} + "; } /// @@ -447,7 +465,7 @@ public class UDPServer { foreach (var data in kvp.Value) { - logger.Debug(data.ToString()); + logger.Debug(PrintData(data)); } } }