diff --git a/src/linker.libs/extends/NumberExtends.cs b/src/linker.libs/extends/NumberExtends.cs index 081721b4..766c1723 100644 --- a/src/linker.libs/extends/NumberExtends.cs +++ b/src/linker.libs/extends/NumberExtends.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -85,6 +84,14 @@ namespace linker.libs.extends new Span(p, sizeof(int)).CopyTo(memory.Span); } } + public static unsafe void ToBytes(this int value, Span span) + { + ref int v = ref value; + fixed (void* p = &v) + { + new Span(p, sizeof(int)).CopyTo(span); + } + } public static unsafe void ToBytes(this int[] value, Memory memory) { fixed (void* p = &value[0]) diff --git a/src/linker.messenger.flow/FlowResolver.cs b/src/linker.messenger.flow/FlowResolver.cs index da1c2142..7b669b74 100644 --- a/src/linker.messenger.flow/FlowResolver.cs +++ b/src/linker.messenger.flow/FlowResolver.cs @@ -66,9 +66,18 @@ namespace linker.messenger.flow ReceiveBytes = online | total; SendtBytes = servers.Count(c => time - c.Value.Time < 15000); Version.Increment(); + + if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) + { + LoggerHelper.Instance.Debug($"online:{online},total:{total},server:{SendtBytes}"); + } } - catch (Exception) + catch (Exception ex) { + if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) + { + LoggerHelper.Instance.Error(ex); + } } await Task.CompletedTask.ConfigureAwait(false); @@ -100,8 +109,12 @@ namespace linker.messenger.flow { Report(); } - catch (Exception) + catch (Exception ex) { + if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG) + { + LoggerHelper.Instance.Error(ex); + } } }, 5000); } @@ -115,31 +128,23 @@ namespace linker.messenger.flow Lon = c.Count() == 1 ? c.First().Lon : c.Average(c => c.Lon) }).ToList(); byte[] netBytes = serializer.Serialize(nets); - byte[] buffer = ArrayPool.Shared.Rent(9 + netBytes.Length); + Span buffer = stackalloc byte[9 + netBytes.Length]; + signCaching.GetOnline(out int total, out int onlone); + buffer[0] = (byte)ResolverType.FlowReport; + onlone.ToBytes(buffer.Slice(1)); + total.ToBytes(buffer.Slice(5)); + netBytes.CopyTo(buffer.Slice(9)); - try - { - signCaching.GetOnline(out int total, out int onlone); - buffer[0] = (byte)ResolverType.FlowReport; - onlone.ToBytes(buffer.AsMemory(1)); - total.ToBytes(buffer.AsMemory(5)); + using UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork); + udpClient.Client.WindowsUdpBug(); - netBytes.CopyTo(buffer.AsMemory(9)); - - - using UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork); - udpClient.Client.WindowsUdpBug(); - - string domain = "linker.snltty.com"; + string domain = "linker.snltty.com"; #if DEBUG - domain = "127.0.0.1"; + domain = "127.0.0.1"; #endif - udpClient.Send(buffer.AsSpan(0, 9 + netBytes.Length), domain, 1802); - } - catch (Exception) - { - } - ArrayPool.Shared.Return(buffer); + udpClient.Send(buffer.Slice(0, 9 + netBytes.Length), domain, 1802); + + udpClient.Dispose(); } } diff --git a/version.txt b/version.txt index 68c61cfa..1670e8ea 100644 --- a/version.txt +++ b/version.txt @@ -1,5 +1,5 @@ v1.8.5 -2025-06-24 17:14:47 +2025-06-25 14:44:35 1. 一些累计更新 2. 备用信标服务器 3. 设置默认中继节点