创建Dmtp服务器
定义
命名空间:TouchSocket.Dmtp
程序集:TouchSocket.Dmtp.dll
程序集:TouchSocketPro.Dmtp.dll
一、说明
Dmtp的服务器有多种形式的host,每种服务器的创建都大同小异,且功能基本一致。
二、服务器架构
Dmtp服务器的架构与其所属的基础协议架构一致,例如,在基于tcp协议时,其架构就和tcp服务器一致。在收到新客户端连接时,会创建一个TcpDmtpSessionClient的类实例,与客户端TcpDmtpClient一一对应,后续的数据通信均由此实例负责。
三、可配置项
可配置项
SetDmtpOption
设置Dmtp相关配置。其中包含:
- VerifyToken:设置验证口令。
- VerifyTimeout:验证连接超时时间。仅用于服务器。意为:当服务器收到基础链接,在指定的时间内如果没有收到握手信息,则直接视为无效链接,直接断开。
四、支持插件接口
声明自定义插件类,实现IPlugin
接口,或者继承PluginBase
,然后实现所需插件接口,即可实现事务的触发。
插件方法 | 功能 |
---|---|
IDmtpHandshakingPlugin | 客户端在验证连接。默认情况下,框架会首先验证连接Token是否正确,如果不正确则直接拒绝。不会有任何投递。用户也可以使用Metadata进行动态验证。 |
IDmtpHandshakedPlugin | 客户端完成握手连接验证 |
IDmtpReceivedPlugin | 在收到Dmtp格式的数据包时触发 |
IDmtpRoutingPlugin | 当需要路由数据时触发,并且必须返回e.IsPermitOperation=true时,才允许路由 |
IDmtpCreatedChannelPlugin | 在收到创建通道的请求时候触发。 |
IDmtpClosingPlugin | 即将断开连接时触发(仅主动断开时、或收到了Close报文时有效)。 |
IDmtpClosedPlugin | 在Dmtp连接断开时触发。 |
五、创建服务器
5.1 TcpDmtpService
TcpDmtpService
是基于Tcp
协议的Dmtp。在可配置的基础之上,还可以配置与TcpService可配置项相关的配置。
var service = new TcpDmtpService();
var config = new TouchSocketConfig()//配置
.SetListenIPHosts(7789)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.SetDmtpOption(new DmtpOption()
{
VerifyToken = "Dmtp"//设定连接口令,作用类似账号密码
});
await service.SetupAsync(config);
await service.StartAsync();
service.Logger.Info($"{service.GetType().Name}已启动");