Java协议转换_一种基于java的网络传输协议转换中间件的制作方法

Java协议转换_⼀种基于java的⽹络传输协议转换中间件的制
作⽅法
⼀种基于java的⽹络传输协议转换中间件的制作⽅法
【技术领域】
[0001]本发明涉及计算机应⽤领域,主要应⽤于web服务器与基于Socket的远程控制系统之间的通信。
【背景技术】
[0002]WEB服务器⼀般基于HTTP协议实现,通过浏览器提供⽤户交互界⾯,能够克服客户端软件可移植性差的缺点。当存在通过浏览器页⾯上操作控制远程设备的需求时,往往需要与⾮HTTP协议的远程控制系统进⾏通信。由于通信协议不兼容,远程控制系统⽆法直接与WEB服务器建⽴连接,需要通过中间件实现控制命令的转发。
[0003]中间件作为服务器端,接收WEB服务器和远程控制系统的连接请求,并实现控制命令与控制响应的转发。⾼效⽹络模型能够提⾼中间件的处理能⼒。JAVA Selector模型⽤于实现事件驱动的⾮阻塞⽹络通信,底层基于epoll实现,通过ServerSocketChannel创建ServerSocket,并向Selector注册该通道的读/
写事件,注册时可将⼀个Object对象作为附件提交。当事件触发时,程序可获得⼀个Select1nKey,并从中读取触发事件的通道和之前提交的附件。
[0004]基于阻塞队列和线程组实现的⽣产者-消费者模型,可⽤于中间件的任务处理。⽣产者线程向阻塞队列中填充待处理的队列项,当队列满时,线程挂起,直到队列有多余空间产⽣,线程被唤醒,完成队列项的插⼊;消费者线程从队列中读取队列项,若队列为空,则线程挂起,直到队列中有新的队列项插⼊。阻塞队列有效实现了⽣产者与消费者程序的解親。
【发明内容】
[0005]本发明的⽬的在于针对现有技术的不⾜,提供⼀种基于JAVA的⽹络传输协议转换中间件。
[0006]本发明的⽬的是通过以下技术⽅案来实现的:⼀种基于JAVA的⽹络传输协议转换中间件,该中间件包括HTTP Server模块、HTTP 命令解析模块、控制命令构建模块和Socket Server 模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
夜来香精油
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数;
所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给 HTTP Server 模块; 各模块⼯作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和SocketServer模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成⽣产者-消费者模式,线程组由newCachedThreadPool 线程池创建;
工程仿真
(2)启动HTTPServer模块和Socket Server模块,并在各⾃的Selector上注册读事件;SoCket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统⽤户名和参数,进⾏⽤户认证;认证成功后,以⽤户名作为key,将触发读事件的套接字描述符存⼊远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插⼊到HTTP命令解析队列;
所述⽤户认证通过查询数据库中的⽤户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap 实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插⼊到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统⽤户名,并根据⽤户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)SocketServer模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的HTTP描述符为附件,注册该套接字描述符的读事件;
(6)Socket Server模块检测到读事件,即远程控制系统响应,将触发事件的套接字描述符插⼊到Socket解析队列;
(7)Socket解析线程从套接字上读取数据包并进⾏解析,构建响应数据包;从附件中获取HTTP套接字描述符,以响应数据包为附件,注册该描述符的写事件;
(8)HTTP Server模块检测到写事件,将附件中的响应数据包发送给Web服务器。
[0007]进⼀步地,所述Socket Server模块在处理读事件时,根据Socket解析线程从数据包中解析出的远程控制系统⽤户名,在远程控制系统哈希表中查以该⽤户名为key的套接字描述符项,若存在则线程进⾏响应解析操作,否则进⾏⽤户认证操作。水电安装开槽机
[0008]本发明的有益效果:实现不同协议系统(基于HTTP协议的WEB服务器与基于Socket的远程系统)
之间的数据通讯。
【具体实施⽅式】
[0009]本发明⼀种基于JAVA的⽹络传输协议转换中间件,包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数; 所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给 HTTP Server 模块;
各模块⼯作步骤如下:
混凝土模板
(1)创建HTTP命令解析模块、控制命令构建模块和SocketServer模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成⽣产者-消费者模式,线程组由newCachedThreadPool 线程池创建;
(2)启动HTTPServer模块和Socket Server模块,并在各⾃的Selector上注册读事件;SoCket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统⽤户名和参数,进⾏⽤户认证;认证成功后,以⽤户名作为key,将触发读事件的套接字描述符存⼊远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插⼊到HTTP命令解析队列;物联网实验设备
所述⽤户认证通过查询数据库中的⽤户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap 实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插⼊到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统⽤户名,并根据⽤户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
用电监控(5)SocketServer模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的H

本文发布于:2024-09-22 04:29:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/234263.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:命令   控制   模块
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议