日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler

發布時間:2023/12/4 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?DotNetty 實現 Modbus TCP 系列 (一) 報文類

DotNetty 實現 Modbus TCP 系列 (二) ModbusFunction 類圖及繼承舉例

DotNetty 作為一個半成品,我們不需要關注細節的實現,只需要關注自己的業務即可,所以最主要的就是處理 Codecs 和 Handler。

所有的 Codecs 和 Handler 均直接或間接繼承自 ChannelHandlerAdapter。為什么要分為 Codecs 和 Handler,個人理解是 Codecs 負責將消息解碼為我們所需的對象或者將處理的結果編碼,Handler 對解碼得到的對象進行邏輯處理,達到職責分離的目的。

DotNetty 中可以注冊多個 Codecs/Handler,入站消息按照注冊的先后順序執行,出站消息按照注冊的先后逆序執行。

對于 Client 端:

  • 入站:ModbusDecoder --> ModbusResponseHandler

  • 出站:ModbusEncoder

對于 Server 端:

  • 入站:ModbusDecoder --> ModbusRequestHandler

  • 出站:ModbusEncoder

ModbusDecoder

ModbusDecoder 繼承了 ByteToMessageDecoder。繼承了 ByteToMessageDecoder 的類必須實現的唯一的抽象方法:Decode,該方法將 ByteBuffer 解析為 List,如果 List 不為空則會將該 List 傳遞給下一個 ChannelHandlerAdapter。

ModbusDecoder 同時為 Client 端和 Server 端使用,如果是 Server 端則將消息解析成請求類,反之如果是 Client 端則將消息解析成響應類。

ModbusResponseHandler

將接收到的響應信息加入 responses 供后續處理。

ModbusRequestHandler

responseService 為一個抽象類,用來自定義處理接收到的請求并返回結果,需要在實現 Server 端時繼承并實現。

文中代碼僅添加了 0x03 的方法)

ModbusEncoder

如果是 ModbusFrame 消息則 Flush,否則傳遞到下一個 ChannelHandlerAdapter。

開源地址:https://github.com/VictorBu/modbus-tcp

原文地址:https://www.cnblogs.com/victorbu/p/10370890.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。