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 LastTicksManager pingTicks = new();
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.ping");
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.tcp.pong");
private readonly byte[] pingBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ping");
private readonly byte[] pongBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.pong");
/// <summary>
@@ -156,16 +156,18 @@ namespace linker.tunnel.connection
Delay = (int)pingTicks.Diff();
}
}
try
else
{
await callback.Receive(this, packet, this.userToken).ConfigureAwait(false);
}
catch (Exception ex)
{
LoggerHelper.Instance.Error(ex);
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
LoggerHelper.Instance.Error(string.Join(",", packet.ToArray()));
try
{
await callback.Receive(this, packet, this.userToken).ConfigureAwait(false);
}
catch (Exception ex)
{
LoggerHelper.Instance.Error(ex);
if (LoggerHelper.Instance.LoggerLevel <= LoggerTypes.DEBUG)
LoggerHelper.Instance.Error(string.Join(",", packet.ToArray()));
}
}
}

View File

@@ -65,7 +65,6 @@ namespace linker.tunnel.connection
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[] finBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.fing");
private readonly byte[] ttlBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
/// <summary>
@@ -139,7 +138,6 @@ namespace linker.tunnel.connection
LastTicks.Update();
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)))
{

View File

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

View File

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

View File

@@ -44,9 +44,8 @@ namespace linker.tunnel.transport
public Action<ITunnelConnection> OnConnected { get; set; } = (state) => { };
private byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.ttl");
private byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.end");
private readonly byte[] authBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.ttl1");
private readonly byte[] endBytes = Encoding.UTF8.GetBytes($"{Helper.GlobalString}.udp.end1");
private readonly ITunnelMessengerAdapter tunnelMessengerAdapter;
public TransportUdp(ITunnelMessengerAdapter tunnelMessengerAdapter)
@@ -71,7 +70,7 @@ namespace linker.tunnel.transport
{
return null;
}
await Task.Delay(100).ConfigureAwait(false);
await Task.Delay(1000).ConfigureAwait(false);
ITunnelConnection connection = await ConnectForward(tunnelTransportInfo).ConfigureAwait(false);
if (connection != null)
{
@@ -84,8 +83,8 @@ namespace linker.tunnel.transport
//反向连接
TunnelTransportInfo tunnelTransportInfo1 = tunnelTransportInfo.ToJsonFormat().DeJson<TunnelTransportInfo>();
_ = BindListen(tunnelTransportInfo1.Local.Local, tunnelTransportInfo1);
await Task.Delay(50).ConfigureAwait(false);
BindAndTTL(tunnelTransportInfo1);
await Task.Delay(1000).ConfigureAwait(false);
if (await tunnelMessengerAdapter.SendConnectBegin(tunnelTransportInfo1).ConfigureAwait(false) == false)
{
return null;
@@ -180,7 +179,7 @@ namespace linker.tunnel.transport
return new TunnelConnectionUdp
{
UdpClient = remoteUdp,
IPEndPoint = NetworkHelper.TransEndpointFamily( remoteEP),
IPEndPoint = NetworkHelper.TransEndpointFamily(remoteEP),
TransactionId = tunnelTransportInfo.TransactionId,
TransactionTag = tunnelTransportInfo.TransactionTag,
RemoteMachineId = tunnelTransportInfo.Remote.MachineId,
@@ -242,11 +241,11 @@ namespace linker.tunnel.transport
/// <returns></returns>
private async Task BindListen(IPEndPoint local, TunnelTransportInfo state)
{
local = new IPEndPoint(IPAddress.IPv6Any,local.Port);
local = new IPEndPoint(IPAddress.IPv6Any, local.Port);
Socket socket = new Socket(local.AddressFamily, SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
try
{
socket.IPv6Only(local.AddressFamily,false);
socket.IPv6Only(local.AddressFamily, false);
socket.ReuseBind(local);
socket.WindowsUdpBug();
ListenAsyncToken token = new ListenAsyncToken
@@ -337,7 +336,7 @@ namespace linker.tunnel.transport
socket.WindowsUdpBug();
socket.ReuseBind(local);
socket.Ttl = (short)(tunnelTransportInfo.Local.RouteLevel);
_ = socket.SendToAsync(endBytes, SocketFlags.None, ip);
_ = socket.SendToAsync(authBytes, SocketFlags.None, ip);
socket.SafeClose();
}
catch (Exception ex)

View File

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