一种基于Netty的服务端通用通信协议转换方法技术

技术编号:38136917 阅读:8 留言:0更新日期:2023-07-08 09:49
本发明专利技术提供了一种基于Netty的服务端通用通信协议转换方法,包括:步骤1,启动Netty的服务,构建Socket的服务端,接受数据包;步骤2,继承Netty解码接口完成半包、粘包的处理,得到完整数据包;步骤3,解析包头转换为自定义Java类;步骤4,构建Mock Servlet环境并配置参数;步骤5,SpringMVC框架输入处理;步骤6,自定义业务逻辑处理;步骤7,SpringMVC框架返回处理;步骤8,返回包编码;步骤9,发送完整包。本发明专利技术利用SpringMVC,实现统一的权限拦截、参数映射、数据验证、统一错误处理机制等灵活的扩展、可大幅度降低开发的代码量,并方便进行单元测试。试。试。

【技术实现步骤摘要】
一种基于Netty的服务端通用通信协议转换方法


[0001]本专利技术属于物联网领域、通信领域,尤其涉及一种基于Netty的服务端通用通信协议转换方法。

技术介绍

[0002]随着物联网的应用迅猛增长,采集协议转换需求急剧增加,针对每一种通信协议,都需要在服务端进行协议解析。解析过程中需要解决粘包、半包、编码、解码、路由映射、业务处理、权限、性能、异常管理、服务端推送等问题。同时传统的开发方式,协议的解析与业务处理耦合度高,测试与重用困难。协议中每一种操作码状态,代表一种控制逻辑,需要采用if多次判断。总体上讲,编写一套高效且稳定的通信模块实现的复杂度较高。程序的稳定性及扩展性不足。目前的针对每一种通信协议都需要有一系列步骤,协议解析与业务处理耦合度高,对开发人员技能要求高。程序的稳定性及可扩展性不高,严重影响项目的开发进度。

技术实现思路

[0003]专利技术目的:本专利技术所要解决的技术问题是针对现有技术的不足,提供一种基于Netty的服务端通用通信协议转换方法,本专利技术提供了基于Netty的通信协议解析转换框架方法。将协议处理的过程进行抽象化、标准化、步骤化,并在过程中,应用成熟的SpringMVC的框架来提高协议解析的稳定性及可扩展性。
[0004]在处理协议的过程中,可抽象分解为接受数据包、半包粘包处理、包头解析、权限控制、路由映射、参数映射、数据验证、通用逻辑处理、返回值编码等步骤。各种类型的通信协议根据上层协议定义的格式,经过半包、粘包处理后,形成完整包,后续进行包头解析,将解析的结果全部转换为统一的ServletRequest,ServletResponse对象,然后将2个参数传入到SpringMVC的DispatcherServlet的service方法中。Url路由映射,拦截器,参数映射,数据验证,统一错误处理等都采用SpringMVC来进行处理。同时将持有通信的Socket的Channel作为参数设置在ServletRequest的Attribute中,实现在长连接状态下,服务端主动发送数据包。
[0005]本专利技术包括以下步骤:
[0006]步骤1,启动Netty的服务,构建Socket的服务端,接受数据包;
[0007]步骤2,继承Netty解码接口完成半包、粘包的处理,得到完整数据包;
[0008]步骤3,解析包头转换为自定义Java类;
[0009]步骤4,构建Mock Servlet环境并配置参数;
[0010]步骤5,SpringMVC框架输入处理;
[0011]步骤6,自定义业务逻辑处理;
[0012]步骤7,SpringMVC框架返回处理;
[0013]步骤8,返回包编码;
[0014]步骤9,发送完整包。
[0015]步骤3包括:将通信协议中规定的发送包抽象为自定义的Java请求Request对象,将通信协议中规定的返回的包抽象为自定义Response对象;解析发送包,将数据包的包头转为请求Request对象的属性,包体作为Request对象的字节byte数组。
[0016]步骤4包括:配置初始化设置模拟ServletRequest对象MockServletRequest,模拟ServletResponse对象MockServletResponse;根据请求Request对象的属性对MockServletRequest进行赋值,分别设置MockServletRequest中的访问路径url,访问头head及协议体body属性;根据包头定义的不同数字的含义,定义枚举类型对应不同url路径;默认url为Post请求;Head默认协议解析格式contenttype为application/json;charset=UTF

8;MockServletRequest的body属性设置为Request的body属性。
[0017]步骤5包括:调用SpringMVC的前端控制器DispatchServlet的service方法,传入MockServletRequest和MockServletReponse参数;根据SpringMVC的框架完成包头解码后url映射、包体解码转换、参数映射、数据验证。
[0018]步骤6包括:根据步骤4中获取到的对象参数MockServletRequest,并将通信的信道channel作为Session设置到MockServletRequest的attribute属性中,同时按照通用的控制层、业务层、数据层来处理业务逻辑;
[0019]如果服务端主动发送信息,获取之前保存在MockServletRequest的attribute属性中的信道Channel,将发送的对象进行序列化编码,调用netty的发送命令进行发送到客户端。
[0020]步骤7包括:在控制层上添加SpringMVC的注解@Response,处理的结果在控制层统一返回为自定义的结果类Result<?>对象,通过SpringMVC默认的Json解析器转换为字节数组,并将结果作为属性参数传入到ServletResponse中;
[0021]构建Resonpse对象,将Request作为构造函数的参数传入到Response中,将ServletResponse的字节数组传入到response对象中。
[0022]步骤8包括:将Response中经过SpringMVC框架默认的Json解析器转换过的字节属性根据不同的url转换为Netty的Bytebuf格式,作为返回包的包体部分;将Response中其余属性编码为ByteBuf作为返回包的包头。将包头及包体合并后形成返回的包;
[0023]步骤9包括:通过Netty的发送链将编码后的包发送到客户端。
[0024]本专利技术具有如下有益效果:
[0025](1)建立通用的协议转换方法,可保证整体解析的过程可控;
[0026](2)利用Netty稳定的通信框架,可保证在NIO多线程通信过程质量可控;
[0027](3)利用SpringMVC的框架结合,可实现url路由映射,方便程序的扩展、降低开发难度;
[0028](4)利用SpringMVC,实现统一的权限拦截、参数映射、数据验证、统一错误处理机制等灵活的扩展、可大幅度降低开发的代码量,并方便进行单元测试。
[0029](5)利用Channel作为ServletRequest的Atrribute属性传入到控制层,可以实现服务端主动发送数据包。
[0030]开发人员按照这个开发方法提供的统一编程模型进行架构,可实现清晰的角色划分、扩展点灵活、大幅度降低开发难度,提高开发效率及通信框架的稳定性
附图说明
[0031]下面结合附图和具体实施方式对本专利技术做更进一步的具体说明,本专利技术的上述和/或其他方面的优点将会变得更加清楚。
[0032]图1是本专利技术架构图。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Netty的服务端通用通信协议转换方法,其特征在于,包括以下步骤:步骤1,启动Netty的服务,构建Socket的服务端,接受数据包;步骤2,继承Netty解码接口完成半包、粘包的处理,得到完整数据包;步骤3,解析包头转换为自定义Java类;步骤4,构建Mock Servlet环境并配置参数;步骤5,SpringMVC框架输入处理;步骤6,自定义业务逻辑处理;步骤7,SpringMVC框架返回处理;步骤8,返回包编码;步骤9,发送完整包。2.根据权利要求1所述的方法,其特征在于,步骤3包括:将通信协议中规定的发送包抽象为自定义的Java请求Request对象,将通信协议中规定的返回的包抽象为自定义Response对象;解析发送包,将数据包的包头转为请求Request对象的属性,包体作为Request对象的字节byte数组。3.根据权利要求2所述的方法,其特征在于,步骤4包括:配置初始化设置模拟ServletRequest对象MockServletRequest,模拟ServletResponse对象MockServletResponse;根据请求Request对象的属性对MockServletRequest进行赋值,分别设置MockServletRequest中的访问路径url,访问头head及协议体body属性;根据包头定义的不同数字的含义,定义枚举类型对应不同url路径;默认url为Post请求;Head默认协议解析格式contenttype为application/json;charset=UTF

8;MockServletRequest的body属性设置为Request的body属性。4.根据权利要求3所述的方法,其特征在于,步骤5包括:调用SpringMVC的前端控制器DispatchServlet的serv...

【专利技术属性】
技术研发人员:孙精科汪深李兵吴大江焦雨晗
申请(专利权)人:中通服咨询设计研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1