您現在的位置是:首頁 > 明星首頁明星

DotNetty(.net core)實現一個簡單的Tcp Server(jt808)

由 IT點滴 發表于 明星2023-01-10
簡介工作執行緒組_bootstrap

netty框架幹什麼的

在網路通訊這塊,JAVA有MINA、Netty等穩定高效的網路通訊基礎框架,現在。NET已經已經進入Net Core開源時代,。NET Framework 和 NET Core 並行發展,。NET Framework已經到 4。7。2,。NET Core也已經到 2。2正式版本,2019-03-06還發布了3。0。0-preview3預覽版。

DotNetty(.net core)實現一個簡單的Tcp Server(jt808)

。net framework

DotNetty是微軟Azure團隊,使用C#實現的Netty的版本,目前最新版本是 0。6。0,可以直接從nuget獲取。DotNetty保留了Netty原來絕大部分的程式設計介面,如果是原來用過Netty的同學,使用DotNetty會發現很多方法是一樣的(^-^ 除了C#方法屬性名是大寫字母開頭,JAVA版本的是小寫字母開頭)。

在網上看到Azure團隊開源的DotNetty框架後,一時興起寫了個基於DotNetty的Tcp Server Demo 解析了JT808(中華人民共和國交通運輸行業標準)的部分指令,示例程式碼在github上面。 感慨JAVA生態強大的同時,還是喜歡C#強大的語法,希望。net core發展越來越好。

示例程式碼:

_bootstrap = new ServerBootstrap();//Netty伺服器初始化

_bossEventLoopGroup = new MultithreadEventLoopGroup(1);//主工作執行緒組

_workerEventLoopGroup = new MultithreadEventLoopGroup();//工作執行緒組

_bootstrap。Group(_bossEventLoopGroup, _workerEventLoopGroup);

_bootstrap。Channel();// 設定通道模式為TcpSocket

_bootstrap。Option(ChannelOption。SoBacklog,Backlog);

_bootstrap。Handler(new LoggingHandler(LogLevel。WARN));

_bootstrap。ChildHandler(new DataServerInitializer());

_bootstrap。ChildOption(ChannelOption。SoKeepalive, true);//是否啟用心跳保活機制

DotNetty(.net core)實現一個簡單的Tcp Server(jt808)

jt808資料測試

部分JT808測試資料如下:終端註冊

7E0100002c0200000000150025002c0133373039363054372d54383038000000000000000000000000003033323931373001d4c142383838387b7E

終端鑑權

7E0102000B018170223038009D3138313730323233303338787E

軌跡資料

7E0200007D020181702230330003000000000000000101EA3B5906AFC37000000000000018050921435330011F310100D004000A0000D40164E10201A4E221545A43532D312E31332E3130392E342031372D31322D32382C4D5430335F503130E30F343630303031383633353537393237E41301CC0000708177443E7081C1A43D7081774535E504012C02580E7E

終端心跳

7E0002000001817022303801B8617E