桌面共享使用打洞或者服务器中继进行代理

This commit is contained in:
少年郎秃头呀
2024-05-07 01:06:08 +08:00
parent e9af825ac2
commit fe61072d0a
13 changed files with 390 additions and 560 deletions

View File

@@ -1,9 +1,8 @@
using cmonitor.client.api;
using cmonitor.client.tunnel;
using cmonitor.config;
using cmonitor.plugins.relay.transport;
using common.libs;
using common.libs.api;
using common.libs.extends;
using System.Text;
namespace cmonitor.plugins.relay
@@ -27,17 +26,16 @@ namespace cmonitor.plugins.relay
{
try
{
RelayTransportState state = await relayTransfer.ConnectAsync(param.Content, "test", config.Data.Client.Relay.SecretKey);
if (state != null)
ITunnelConnection connection = await relayTransfer.ConnectAsync(param.Content, "test", config.Data.Client.Relay.SecretKey);
if (connection != null)
{
var socket = state.Socket;
for (int i = 0; i < 10; i++)
{
Logger.Instance.Debug($"relay [test] send {i}");
socket.Send(Encoding.UTF8.GetBytes($"snltty.relay.{i}"));
await connection.SendAsync(Encoding.UTF8.GetBytes($"snltty.relay.{i}"));
await Task.Delay(10);
}
socket.SafeClose();
connection.Close();
}
}
catch (Exception ex)
@@ -48,23 +46,21 @@ namespace cmonitor.plugins.relay
}
private void RelayTest()
{
relayTransfer.OnConnected += (RelayTransportState state) =>
relayTransfer.SetConnectCallback("test", (ITunnelConnection connection) =>
{
if (state.Info.TransactionId == "test")
Task.Run(() =>
{
Task.Run(() =>
connection.BeginReceive(async (ITunnelConnection connection, Memory<byte> data, object state) =>
{
byte[] bytes = new byte[1024];
while (true)
{
int length = state.Socket.Receive(bytes);
if (length == 0) break;
Logger.Instance.Debug($"relay [{state.Info.TransactionId}] receive {Encoding.UTF8.GetString(bytes.AsSpan(0,length))}");
}
});
}
};
Logger.Instance.Debug($"relay [{connection.TransactionId}] receive {Encoding.UTF8.GetString(data.Span)}");
await Task.CompletedTask;
},
async (ITunnelConnection connection, object state) =>
{
await Task.CompletedTask;
}, null);
});
});
}
}