在网络通讯这块,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预览版。
.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);//是否启用心跳保活机制
jt808数据测试
部分JT808测试数据如下:终端注册
7E0100002c0200000000150025002c0133373039363054372d54383038000000000000000000000000003033323931373001d4c142383838387b7E
终端鉴权
7E0102000B018170223038009D3138313730323233303338787E
轨迹数据
7E0200007D020181702230330003000000000000000101EA3B5906AFC37000000000000018050921435330011F310100D004000A0000D40164E10201A4E221545A43532D312E31332E3130392E342031372D31322D32382C4D5430335F503130E30F343630303031383633353537393237E41301CC0000708177443E7081C1A43D7081774535E504012C02580E7E
终端心跳
7E0002000001817022303801B8617E