首页 > 其他分享 >Dotnetty学习笔记——自定义初始化处理器

Dotnetty学习笔记——自定义初始化处理器

时间:2024-09-07 17:36:24浏览次数:12  
标签:初始化 pipeline 自定义 AddLast dealMsgAction server new Dotnetty channel

常常我们需要开一个服务单,对接不同的客户端,编码器、解码器等都不同,需要针对不同IP添加不同的处理器。

public class CustomInitializer :Channellnitializer<lSocketChannel>
{
    Action<string,string>_dealMsgAction; lServer_server;
    public CustomInitializer(Action<string,string>dealMsgAction,IServer server)
{
    dealMsgAction = dealMsgAction;
    _server = server;
}
protected override void InitChannel(lSocketChannel channel)
{
    var ip = (channel.RemoteAddress as IPEndPoint).IPEndPointToString();
    IChannelPipeline pipeline =channel.Pipeline;
    if (ip== SystemSettingViewModel.Instance.SystemSetting.PLCIP)
    {
      pipeline.AddLast("modbus", new ModbusEncoder();
    }
    else
    {
      pipeline.AddLast(new LoggingHandler("SRV-CONN"));
      pipeline.AddLast(new IdleStateHandler(10,10,30));//加心跳 
      pipeline.AddLast("encoder", new TIvEncoder();
      pipeline.AddLast("decoder", new LengthFieldBasedFrameDecoder(DotNetty.Buffers.ByteOrder.LittleEndian, int.MaxValue, 4,4, 0,8,true));
      pipeline.AddLast("handler", new SocketServerHandler(_dealMsgAction,_server));
  }
}
}

标签:初始化,pipeline,自定义,AddLast,dealMsgAction,server,new,Dotnetty,channel
From: https://www.cnblogs.com/kafeibuhuizui/p/18401948

相关文章

  • 【保姆级教程】使用 PyTorch 自定义卷积神经网络(CNN) 实现图像分类、训练验证、预测全
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。......
  • SQL 自定义函数 生成网卡地址,MES开发中经常会用到的
    SQL自定义函数生成网卡地址,MES开发中经常会用到的ALTERFunction[dbo].[Fun_ReleaseMACadd]( @CurrentSeqNovarchar(6))Returnsvarchar(18)-------------------------------------------------------------------------------------------------As--------------......
  • 如何创建和管理自定义systemd服务
    创建和管理自定义systemd服务是Linux系统管理中的一项重要技能。systemd是一种初始化系统和服务管理器,广泛应用于现代Linux发行版。以下是创建和管理自定义systemd服务的详细步骤。1.创建自定义服务单元文件自定义服务的配置文件称为“单元文件”,通常位于/etc/system......
  • 记录 PyQt6 / PySide 6 自定义边框窗口的 Bug 及可能可行的解决方案:窗口抖动和添加 DW
    前言:本篇文章将要讨论我在前不久发表的关于PyQt6/PySide6自定义边框窗口代码及内容中的问题:(终)PyQt6/PySide6+Pywin32自定义标题栏窗口+完全还原Windows原生窗口边框特效_pyside6win32无边框窗口-CSDN博客https://blog.csdn.net/2402_84665876/article/detail......
  • 自定义排序规则
    Comparator接口的使用:TreeSet集合存储自定义类型的对象时,必须指定排序规则,支持如下两种方式来指定比较规则。方式一让自定义的类实现Comparable接口,重写里面的compareTo方法来指定比较规则。​//属性类publicclassStudentimplementsComparable<Student>{  privat......
  • VUE框架Vue3使用自定义事件的方式传递数据------VUE框架
    <template><!--给User绑定事件--><!--带参数的方法不要有括号,否则识别不到,我不懂原理...--><User@event1="showInfo"></User></template><script>importUserfrom"./components/User.vue"exportdefault{......
  • C语言-第六章-加餐:其他自定义类型
    传送门:C语言-第六章:结构体目录第一节:位段    1-1.位段是什么    1-2.位段的大小第二节:联合体    2-1.联合体是什么    2-2联合体的大小第三节:枚举类型    3-1.枚举是什么第四节:结构体中的柔性数组    4-1.柔性数组......
  • 功能发布-自定义SQL查询
    引言本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。什么是自定义SQL查询?自定义SQL查询是指根据具体的应用场景和需求,由开发者或数据库管理员自行编写的SQL(StructuredQueryLanguage,结构化查询语言)语句。自定义SQL查询有什么作用?以精确的方式从数据库中检索数据。在Cl......
  • 深入探讨Spring中Bean的初始化方式
    一、Spring中的Bean定义与生命周期在探讨具体的初始化方式之前,有必要对Spring中的Bean定义与生命周期进行简单回顾。1.1Bean的定义在Spring中,Bean指的是由Spring容器管理的对象。Bean的定义可以通过以下几种方式:XML配置:通过<bean>标签定义Bean。Java配置:通过@Configura......
  • vue自定义指令
    现象:可使用自定义指令v-per实现:index.js文件importperfrom"./per"importper2from"./per2"//批量注册指令(现在就一个permission)constdirectives={per,per2}//注册的一般写法,循环遍历directives,通过vue.directive注册exportdefault{inst......