跳到主要内容
版本:4.0-beta

创建Dmtp客户端

定义

命名空间:
TouchSocket.Dmtp
安装:
dotnet add package TouchSocket.Dmtp

定义

命名空间:
TouchSocketPro.Dmtp
安装:
dotnet add package TouchSocketPro.Dmtp

一、说明

DmtpClient 是基于 Dmtp 协议的客户端抽象,针对不同的底层传输协议(TCP、UDP、HTTP、WebSocket、NamedPipe)提供了统一的上层 API。无论选择哪种协议,客户端侧的能力、调用方式与插件扩展点都保持一致,便于在多场景下快速迁移与复用。

二、特点

  • 简单易用:配置即用,示例开箱即跑。
  • 多协议统一:支持 TCP、UDP、HTTP、WebSocket、NamedPipe 多种传输,API 统一。
  • 高性能:内存池与多线程设计,传输、RPC、文件等能力性能稳定。
  • 可靠通信:内置握手认证、心跳与异常关闭处理,结合重连插件可构建更稳健的连接。
  • 插件驱动:基于委托与插件体系,支持全链路 AOP 能力。
  • 生态完备:无论使用哪种底层协议,均可使用 Dmtp 的文件传输、RPC 调用、远程访问等高级功能。

2.1 与服务器配合

DmtpClient 连接到服务器后,服务器会为其创建对应的 SessionClient 实例,后续的数据交互在两端的 Dmtp 协议栈中完成,上层仅关注统一 API。

三、产品应用场景

  • 需要跨平台与跨协议的统一通信栈。
  • 需要在客户端侧使用 RPC、文件传输、远程访问等高级能力。
  • 工业现场设备、IoT 网关、桌面/服务进程等需要稳定长连接通信的场景。
  • 微服务/边缘节点作为调用方,向中心服务发起高并发、低时延通信。

四、客户端架构

客户端与服务器的关系示意如下:

  • 客户端本地维护 Dmtp 协议栈,完成握手、认证、心跳、通道管理等。
  • 服务器侧为每个客户端维护一个对应的 SessionClient,两端通过 Dmtp 协议进行统一交互。

五、可配置项

5.1 Dmtp特有配置

SetDmtpOption

设置Dmtp相关配置。其中包含:

🔄 正在加载代码...
  • VerifyToken:设置验证口令,作用类似账号密码。客户端连接时必须提供正确的Token才能建立连接。
  • VerifyTimeout:验证连接超时时间。仅用于服务器。意为:当服务器收到基础链接,在指定的时间内如果没有收到握手信息,则直接视为无效链接,直接断开。

5.2 底层协议配置

根据不同的底层协议,DmtpService还可以配置相应协议的特有选项:

5.2 底层协议配置

根据不同的底层协议,客户端还可叠加相应协议的特有配置:

六、支持插件接口

声明自定义插件类,实现IPlugin接口,或者继承PluginBase,然后实现所需插件接口,即可实现事务的触发。

插件方法功能
IDmtpConnectingPlugin客户端在验证连接。默认情况下,框架会首先验证连接Token是否正确,如果不正确则直接拒绝。不会有任何投递。用户也可以使用Metadata进行动态验证。
IDmtpConnectedPlugin客户端完成握手连接验证
IDmtpReceivedPlugin在收到Dmtp格式的数据包时触发
IDmtpRoutingPlugin当需要路由数据时触发,并且必须返回e.IsPermitOperation=true时,才允许路由
IDmtpCreatedChannelPlugin在收到创建通道的请求时候触发。
IDmtpClosingPlugin即将断开连接时触发(仅主动断开时、或收到了Close报文时有效)。
IDmtpClosedPlugin在Dmtp连接断开时触发。

七、创建客户端

7.1 TcpDmtpClient

TcpDmtpClient对应TcpDmtpService服务器。基本创建如下,支持创建TcpClient的所有配置。

🔄 正在加载代码...

7.2 UdpDmtp

UdpDmtp对应UdpDmtp服务器,即UdpDmtp即是服务器,又是客户端。基本创建如下,支持创建UdpSession的所有配置。

🔄 正在加载代码...
备注

UdpDmtp作为客户端时,需要设定默认的SetRemoteIPHost,同时需要主动UseUdpReceive,以开启udp接收。如果需要固定监听端口,可使用SetBindIPHost

7.3 HttpDmtpClient

HttpDmtpClient对应HttpDmtpService,或者HttpMiddlewareDmtpService服务器。基本创建如下,支持创建HttpClient的所有配置。

🔄 正在加载代码...

7.4 WebSocketDmtpClient

🔄 正在加载代码...

7.5 NamedPipeDmtpClient

NamedPipeDmtpClient对应NamedPipeDmtpService服务器。基本创建如下,支持创建NamedPipeClient的所有配置。

🔄 正在加载代码...

7.6 TcpDmtpClientFactory

DmtpClient工厂工作模式是一种,由多个传输通讯连接组成的连接池。

🔄 正在加载代码...

7.7 HttpDmtpClientFactory

DmtpClient工厂工作模式是一种,由多个传输通讯连接组成的连接池。

🔄 正在加载代码...

八、示例Demo