提交 8bfe27b4 编写于 作者: 若汝棋茗's avatar 若汝棋茗

增加NATService示例

上级 8a7ea3f9
......@@ -38,6 +38,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Consul集群示例", "Consu
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsulConsoleApp", "examples\ConsulConsoleApp\ConsulConsoleApp.csproj", "{657BDC94-A1A5-44B3-8FA1-41531C6F7321}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NATService示例", "NATService示例", "{825D21FC-245C-4B6B-B237-E4ADEB2C98DC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NATServiceConsoleApp", "examples\NATServiceConsoleApp\NATServiceConsoleApp.csproj", "{84206421-460C-4743-BA10-A749436AB4DE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -76,6 +80,10 @@ Global
{657BDC94-A1A5-44B3-8FA1-41531C6F7321}.Debug|Any CPU.Build.0 = Debug|Any CPU
{657BDC94-A1A5-44B3-8FA1-41531C6F7321}.Release|Any CPU.ActiveCfg = Release|Any CPU
{657BDC94-A1A5-44B3-8FA1-41531C6F7321}.Release|Any CPU.Build.0 = Release|Any CPU
{84206421-460C-4743-BA10-A749436AB4DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{84206421-460C-4743-BA10-A749436AB4DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{84206421-460C-4743-BA10-A749436AB4DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{84206421-460C-4743-BA10-A749436AB4DE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -94,6 +102,8 @@ Global
{2DA72D0E-DAAC-4272-A10E-1EF89439636B} = {397AE2E0-1FB6-4B71-A888-328FF7FA05B4}
{B405B0AE-6ECD-4586-B3D6-9D875073DFAF} = {517CF381-4C15-4519-9BC4-92DC4C412C8D}
{657BDC94-A1A5-44B3-8FA1-41531C6F7321} = {B405B0AE-6ECD-4586-B3D6-9D875073DFAF}
{825D21FC-245C-4B6B-B237-E4ADEB2C98DC} = {517CF381-4C15-4519-9BC4-92DC4C412C8D}
{84206421-460C-4743-BA10-A749436AB4DE} = {825D21FC-245C-4B6B-B237-E4ADEB2C98DC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DB787235-A13A-4A3D-B5A8-5DFEB6511EEE}
......
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="RRQMSocket" Version="8.2.1" />
</ItemGroup>
</Project>
using RRQMCore;
using RRQMCore.ByteManager;
using RRQMCore.Log;
using RRQMSocket;
using System;
namespace NATServiceConsoleApp
{
class Program
{
static void Main(string[] args)
{
MyNATService service = new MyNATService();
var config = new RRQMConfig();
config.SetListenIPHosts(new IPHost[] { new IPHost(7788) });
service.Setup(config);
service.Start();
Console.WriteLine("转发服务器已启动。已将7788端口转发到127.0.0.1:7789与127.0.0.1:7790地址");
}
}
class MyNATService : NATService
{
protected override void OnConnected(NATSocketClient socketClient, RRQMEventArgs e)
{
base.OnConnected(socketClient, e);
try
{
//此处模拟的是只要连接到NAT服务器,就转发。
//实际上,这个方法可以随时调用。
socketClient.AddTargetClient(new RRQMConfig().SetRemoteIPHost("127.0.0.1:7789"));
socketClient.AddTargetClient(new RRQMConfig().SetRemoteIPHost("127.0.0.1:7790"));
}
catch (Exception ex)
{
socketClient.Logger.Exception(ex);
}
}
protected override void OnTargetClientDisconnected(NATSocketClient socketClient, ITcpClient tcpClient, ClientDisconnectedEventArgs e)
{
socketClient.Logger.Message($"{socketClient.IP}:{socketClient.Port}的转发客户端{tcpClient.IP}:{tcpClient.Port}已经断开连接。");
base.OnTargetClientDisconnected(socketClient, tcpClient, e);
}
protected override byte[] OnNATReceived(NATSocketClient socketClient, ByteBlock byteBlock, IRequestInfo requestInfo)
{
//服务器收到的数据
return base.OnNATReceived(socketClient, byteBlock, requestInfo);
}
protected override byte[] OnTargetClientReceived(NATSocketClient socketClient, ITcpClient tcpClient, ByteBlock byteBlock, IRequestInfo requestInfo)
{
//连接的客户端收到的数据
return base.OnTargetClientReceived(socketClient, tcpClient, byteBlock, requestInfo);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册