This commit is contained in:
snltty
2025-06-14 18:52:24 +08:00
parent 2f8a304b3d
commit c7c5ac0684
6 changed files with 26 additions and 27 deletions

View File

@@ -60,8 +60,8 @@ namespace linker.tunnel.connection
private readonly ReceiveDataBuffer bufferCache = new ReceiveDataBuffer(); private readonly ReceiveDataBuffer bufferCache = new ReceiveDataBuffer();
private readonly LastTicksManager pingTicks = new(); private readonly LastTicksManager pingTicks = new();
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.ping"); private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping");
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.pong"); private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong");
/// <summary> /// <summary>
@@ -156,7 +156,8 @@ namespace linker.tunnel.connection
Delay = (int)pingTicks.Diff(); Delay = (int)pingTicks.Diff();
} }
} }
else
{
try try
{ {
await callback.Receive(this, packet, this.userToken).ConfigureAwait(false); await callback.Receive(this, packet, this.userToken).ConfigureAwait(false);
@@ -168,6 +169,7 @@ namespace linker.tunnel.connection
LoggerHelper.Instance.Error(string.Join(",", packet.ToArray())); LoggerHelper.Instance.Error(string.Join(",", packet.ToArray()));
} }
} }
}
private async Task ProcessHeart() private async Task ProcessHeart()
{ {

View File

@@ -65,7 +65,6 @@ namespace linker.tunnel.connection
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping"); private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping");
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong"); private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong");
private readonly byte[] finBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.fing"); private readonly byte[] finBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.fing");
private readonly byte[] ttlBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
/// <summary> /// <summary>
@@ -139,7 +138,6 @@ namespace linker.tunnel.connection
LastTicks.Update(); LastTicks.Update();
Memory<byte> memory = buffer.AsMemory(offset, length); Memory<byte> memory = buffer.AsMemory(offset, length);
if (memory.Length == ttlBytes.Length && memory.Span.SequenceEqual(ttlBytes)) return;
if (memory.Length == pingBytes.Length && memory.Span.Slice(0, pingBytes.Length - 4).SequenceEqual(pingBytes.AsSpan(0, pingBytes.Length - 4))) if (memory.Length == pingBytes.Length && memory.Span.Slice(0, pingBytes.Length - 4).SequenceEqual(pingBytes.AsSpan(0, pingBytes.Length - 4)))
{ {

View File

@@ -41,8 +41,8 @@ namespace linker.tunnel.transport
private ConcurrentDictionary<int, ListenAsyncToken> stateDic = new ConcurrentDictionary<int, ListenAsyncToken>(); private ConcurrentDictionary<int, ListenAsyncToken> stateDic = new ConcurrentDictionary<int, ListenAsyncToken>();
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl"); private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ttl1");
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end"); private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.end1");
private IPEndPoint quicListenEP; private IPEndPoint quicListenEP;
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter; private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;

View File

@@ -40,8 +40,8 @@ namespace linker.tunnel.transport
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { }; public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl"); private readonly byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.ttl1");
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end"); private readonly byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.end1");
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter; private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
public TransportTcpP2PNAT(ITunnelMessengerAdapter tunnelMessengerAdapter) public TransportTcpP2PNAT(ITunnelMessengerAdapter tunnelMessengerAdapter)

View File

@@ -44,9 +44,8 @@ namespace linker.tunnel.transport
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { }; public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
private readonly byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ttl1");
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl"); private readonly byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.end1");
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end");
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter; private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
public TransportUdp(ITunnelMessengerAdapter tunnelMessengerAdapter) public TransportUdp(ITunnelMessengerAdapter tunnelMessengerAdapter)
@@ -71,7 +70,7 @@ namespace linker.tunnel.transport
{ {
return null; return null;
} }
await Task.Delay(100).ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false);
ITunnelConnection connection = await ConnectForward(tunnelTransportInfo).ConfigureAwait(false); ITunnelConnection connection = await ConnectForward(tunnelTransportInfo).ConfigureAwait(false);
if (connection != null) if (connection != null)
{ {
@@ -84,8 +83,8 @@ namespace linker.tunnel.transport
//反向连接 //反向连接
TunnelTransportInfo tunnelTransportInfo1 = tunnelTransportInfo.ToJsonFormat().DeJson<TunnelTransportInfo>(); TunnelTransportInfo tunnelTransportInfo1 = tunnelTransportInfo.ToJsonFormat().DeJson<TunnelTransportInfo>();
_ = BindListen(tunnelTransportInfo1.Local.Local, tunnelTransportInfo1); _ = BindListen(tunnelTransportInfo1.Local.Local, tunnelTransportInfo1);
await Task.Delay(50).ConfigureAwait(false);
BindAndTTL(tunnelTransportInfo1); BindAndTTL(tunnelTransportInfo1);
await Task.Delay(1000).ConfigureAwait(false);
if (await tunnelMessengerAdapter.SendConnectBegin(tunnelTransportInfo1).ConfigureAwait(false) == false) if (await tunnelMessengerAdapter.SendConnectBegin(tunnelTransportInfo1).ConfigureAwait(false) == false)
{ {
return null; return null;
@@ -337,7 +336,7 @@ namespace linker.tunnel.transport
socket.WindowsUdpBug(); socket.WindowsUdpBug();
socket.ReuseBind(local); socket.ReuseBind(local);
socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel); socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel);
_ = socket.SendToAsync(endBytes, SocketFlags.None, ip); _ = socket.SendToAsync(authBytes, SocketFlags.None, ip);
socket.SafeClose(); socket.SafeClose();
} }
catch (Exception ex) catch (Exception ex)

View File

@@ -1,5 +1,5 @@
v1.8.3 v1.8.3
2025-06-14 14:51:14 2025-06-14 18:52:23
1. 一些累计更新 1. 一些累计更新
2. 修复socks5解决CPU爆满问题增加本地域名解析支持HTTP代理 2. 修复socks5解决CPU爆满问题增加本地域名解析支持HTTP代理
3. 优化唤醒模块 3. 优化唤醒模块