提交 bf3bb0d4 编写于 作者: 若汝棋茗

添加tcp命令行插件示例

上级 116d8d04
......@@ -158,7 +158,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "包序列化模式", "包
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageConsoleApp", "examples\包序列化模式\PackageConsoleApp\PackageConsoleApp.csproj", "{BDF15495-BC59-4A66-8643-F8166907B28E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdapterTesterConsoleApp", "examples\Adapter简单示例\AdapterTesterConsoleApp\AdapterTesterConsoleApp.csproj", "{BF997370-81F3-4DCA-81A3-AF7D9050ABB1}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdapterTesterConsoleApp", "examples\Adapter简单示例\AdapterTesterConsoleApp\AdapterTesterConsoleApp.csproj", "{BF997370-81F3-4DCA-81A3-AF7D9050ABB1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tcp命令行执行插件", "Tcp命令行执行插件", "{5B8D8451-E920-42E5-9F6A-D6D1238A24B4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TcpCommandLineConsoleApp", "examples\Tcp简单示例\Tcp命令行执行插件\TcpCommandLineConsoleApp\TcpCommandLineConsoleApp.csproj", "{15554D7C-32B3-48A2-9475-2364A721A1F7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -354,6 +358,10 @@ Global
{BF997370-81F3-4DCA-81A3-AF7D9050ABB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF997370-81F3-4DCA-81A3-AF7D9050ABB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF997370-81F3-4DCA-81A3-AF7D9050ABB1}.Release|Any CPU.Build.0 = Release|Any CPU
{15554D7C-32B3-48A2-9475-2364A721A1F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15554D7C-32B3-48A2-9475-2364A721A1F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{15554D7C-32B3-48A2-9475-2364A721A1F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15554D7C-32B3-48A2-9475-2364A721A1F7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -414,6 +422,8 @@ Global
{0E76C63C-66CC-43BE-A6AF-A7862E669C2F} = {14C9DCF7-767F-48F5-956F-782161BA2420}
{BDF15495-BC59-4A66-8643-F8166907B28E} = {55970A52-E1A6-493B-91C4-9F4EE3E888B6}
{BF997370-81F3-4DCA-81A3-AF7D9050ABB1} = {F8C07F29-7233-4FD3-A3DC-45963071E20A}
{5B8D8451-E920-42E5-9F6A-D6D1238A24B4} = {FB46E926-0EEC-488C-B950-A16D2E7F694B}
{15554D7C-32B3-48A2-9475-2364A721A1F7} = {5B8D8451-E920-42E5-9F6A-D6D1238A24B4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DB787235-A13A-4A3D-B5A8-5DFEB6511EEE}
......
using TouchSocket.Core;
using TouchSocket.Sockets;
namespace TcpCommandLineConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
TcpService service = new TcpService();
var config = new TouchSocketConfig();
config.SetListenIPHosts(new IPHost[] { new IPHost("127.0.0.1:7789"), new IPHost(7790) }) //同时监听两个地址
.SetDataHandlingAdapter(() =>
{
//return new TerminatorPackageAdapter(1024, "\r\n");//命令行中使用\r\n结尾
return new NormalDataHandlingAdapter();//亦或者省略\r\n,但此时调用方不能高速调用,会粘包
})
.UsePlugin()
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.Add<MyCommandLinePlugin>();
});
//载入配置
service.Setup(config);
//启动
service.Start();
service.Logger.Info("服务器成功启动。");
service.Logger.Info("使用:“Add 10 20”测试");
service.Logger.Info("使用:“MUL 10 20”测试");
service.Logger.Info("使用:“Exc”测试异常");
Console.ReadKey();
}
}
/// <summary>
/// 命令执行插件。方法必须以Command结尾。
/// </summary>
class MyCommandLinePlugin : TcpCommandLinePlugin
{
private readonly ILog logger;
public MyCommandLinePlugin(ILog logger) : base(logger)
{
this.ReturnException = true;//表示执行异常的时候,是否返回异常信息
this.logger = logger;
}
/// <summary>
/// 加法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int AddCommand(int a, int b)
{
this.logger.Info($"执行{nameof(AddCommand)}");
return a + b;
}
/// <summary>
/// 乘法,并且获取调用者信息
/// </summary>
/// <param name=""></param>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int MULCommand(ISocketClient socketClient,int a, int b)
{
this.logger.Info($"{socketClient.IP}:{socketClient.Port}执行{nameof(MULCommand)}");
return a * b;
}
/// <summary>
/// 测试异常
/// </summary>
/// <exception cref="Exception"></exception>
public void ExcCommand()
{
throw new Exception("我异常了");
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.0.0" />
</ItemGroup>
</Project>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册