CN104917814B - 一种基于java的网络传输协议转换中间件 - Google Patents
一种基于java的网络传输协议转换中间件 Download PDFInfo
- Publication number
- CN104917814B CN104917814B CN201510187186.0A CN201510187186A CN104917814B CN 104917814 B CN104917814 B CN 104917814B CN 201510187186 A CN201510187186 A CN 201510187186A CN 104917814 B CN104917814 B CN 104917814B
- Authority
- CN
- China
- Prior art keywords
- socket
- http
- control
- tele
- server modules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 8
- 238000006243 chemical reaction Methods 0.000 title claims description 7
- 238000010276 construction Methods 0.000 claims abstract description 4
- 230000000153 supplemental effect Effects 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 3
- 241000208340 Araliaceae Species 0.000 claims 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 1
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 1
- 235000008434 ginseng Nutrition 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于JAVA的网络传输协议转换中间件,包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server模块;所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTP Server模块接收的控制请求解析出实现控制所需的参数;控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给HTTP Server模块;本发明用于实现基于HTTP协议的WEB服务器与基于Socket的远程控制系统之间的通信。
Description
技术领域
本发明涉及计算机应用领域,主要应用于web服务器与基于Socket的远程控制系统之间的通信。
背景技术
WEB服务器一般基于HTTP协议实现,通过浏览器提供用户交互界面,能够克服客户端软件可移植性差的缺点。当存在通过浏览器页面上操作控制远程设备的需求时,往往需要与非HTTP协议的远程控制系统进行通信。由于通信协议不兼容,远程控制系统无法直接与WEB服务器建立连接,需要通过中间件实现控制命令的转发。
中间件作为服务器端,接收WEB服务器和远程控制系统的连接请求,并实现控制命令与控制响应的转发。高效网络模型能够提高中间件的处理能力。JAVA Selector模型用于实现事件驱动的非阻塞网络通信,底层基于epoll实现,通过ServerSocketChannel创建ServerSocket,并向Selector注册该通道的读/写事件,注册时可将一个Object对象作为附件提交。当事件触发时,程序可获得一个SelectionKey,并从中读取触发事件的通道和之前提交的附件。
基于阻塞队列和线程组实现的生产者-消费者模型,可用于中间件的任务处理。生产者线程向阻塞队列中填充待处理的队列项,当队列满时,线程挂起,直到队列有多余空间产生,线程被唤醒,完成队列项的插入;消费者线程从队列中读取队列项,若队列为空,则线程挂起,直到队列中有新的队列项插入。阻塞队列有效实现了生产者与消费者程序的解耦。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于JAVA的网络传输协议转换中间件。
本发明的目的是通过以下技术方案来实现的:一种基于JAVA的网络传输协议转换中间件,该中间件包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和SocketServer模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数;
所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给HTTP Server模块;
各模块工作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和Socket Server模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成生产者-消费者模式,线程组由newCachedThreadPool线程池创建;
(2)启动HTTP Server模块和 Socket Server模块,并在各自的Selector上注册读事件;Socket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统用户名和参数,进行用户认证;认证成功后,以用户名作为key,将触发读事件的套接字描述符存入远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插入到HTTP命令解析队列;
所述用户认证通过查询数据库中的用户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插入到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统用户名,并根据用户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)Socket Server模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的HTTP描述符为附件,注册该套接字描述符的读事件;
(6)Socket Server模块检测到读事件,即远程控制系统响应,将触发事件的套接字描述符插入到Socket解析队列;
(7)Socket解析线程从套接字上读取数据包并进行解析,构建响应数据包;从附件中获取HTTP套接字描述符,以响应数据包为附件,注册该描述符的写事件;
(8)HTTP Server模块检测到写事件,将附件中的响应数据包发送给Web服务器。
进一步地,所述Socket Server模块在处理读事件时,根据Socket解析线程从数据包中解析出的远程控制系统用户名,在远程控制系统哈希表中查找以该用户名为key的套接字描述符项,若存在则线程进行响应解析操作,否则进行用户认证操作。
本发明的有益效果:实现不同协议系统(基于HTTP协议的WEB服务器与基于Socket的远程系统)之间的数据通讯。
具体实施方式
本发明一种基于JAVA的网络传输协议转换中间件,包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数;
所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给HTTP Server模块;
各模块工作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和Socket Server模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成生产者-消费者模式,线程组由newCachedThreadPool线程池创建;
(2)启动HTTP Server模块和 Socket Server模块,并在各自的Selector上注册读事件;Socket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统用户名和参数,进行用户认证;认证成功后,以用户名作为key,将触发读事件的套接字描述符存入远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插入到HTTP命令解析队列;
所述用户认证通过查询数据库中的用户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插入到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统用户名,并根据用户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)Socket Server模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的HTTP描述符为附件,注册该套接字描述符的读事件;
(6)Socket Server模块检测到读事件,即远程控制系统响应,将触发事件的套接字描述符插入到Socket解析队列;
(7)Socket解析线程从套接字上读取数据包并进行解析,构建响应数据包;从附件中获取HTTP套接字描述符,以响应数据包为附件,注册该描述符的写事件;
(8)HTTP Server模块检测到写事件,将附件中的响应数据包发送给Web服务器。
进一步地,所述Socket Server模块在处理读事件时,根据Socket解析线程从数据包中解析出的远程控制系统用户名,在远程控制系统哈希表中查找以该用户名为key的套接字描述符项,若存在则线程进行响应解析操作,否则进行用户认证操作。
实施例
基于阻塞队列创建HTTP命令解析队列、命令构建队列和Socket解析队列;基于newCachedThreadPool线程池创建HTTP命令解析线程组、命令构建线程组和Socket解析线程组。
基于Selector创建非阻塞的HTTP Server和Socket Server,并注册二者的ACCEPT事件。启动HTTP Server和Socket Server,当有事件触发时,判断触发事件类型,若为ACCEPT事件,则调用accept生成SocketChannel通道,向Selector注册该通道的读事件;若触发事件为读事件,则注销读事件,将触发事件的套接字描述符插入到HTTP命令解析队列或Socket解析队列;若触发事件为写事件,则注销写事件,HTTP Server从附件中读取响应数据包,发送给WEB服务器,并关闭该连接,Socket Server从附件中读取控制命令包,将控制字段发送给远程控制系统,并以控制命令包为附件注册触发事件通道的读事件。
当HTTP命令解析队列中有队列项插入时,HTTP命令解析线程组被唤起,其中的一个线程抢占到该队列项(HTTP套接字描述符),从描述符对应的通道中读取数据,进行控制参数解析,将控制参数和HTTP套接字描述符构成控制参数包,插入到命令构建队列,线程进行下一次循环。
当命令构建队列中有队列项插入时,命令构建线程组被唤起,其中的一个线程抢占到队列项(控制参数包),构建控制字段,用控制字段替换控制参数包中的控制参数,构成控制命令包;从控制参数中获得远程控制系统用户名,在远程控制系统哈希表中查找该用户名,若用户名不存在,则向WEB服务器发送“404: 远程控制系统不存在”响应,否则从哈希表中读取Socket套接字描述符;通过描述符获得对应通道,以控制命令包为附件注册该通道的写事件。
当Socket解析队列中有队列项插入时,Socket解析线程组被唤起,其中一个线程抢占到队列项(Socket套接字描述符),从描述符对应的通道中读取数据,解析出远程控制系统用户名;在远程控制系统哈希表中查找该用户名,若不存在,则进一步解析密码并进行用户认证,认证成功后向哈希表中填入用户名和对应套接字;若哈希表中已存在该用户名,则进行控制响应解析,构建响应包,并从附件中获得HTTP套接字描述符,以响应包为附件,注册该套接字描述符对应通道的写事件。
Claims (2)
1.一种基于JAVA的网络传输协议转换中间件,其特征在于,该中间件包括HTTP Server模块、HTTP命令解析模块、控制命令构建模块和Socket Server模块,其中:
所述HTTP Server模块基于Selector模型实现,接收web服务器的控制请求并返回控制响应;
所述HTTP命令解析模块包括HTTP命令解析队列和HTTP命令解析线程组,根据HTTPServer模块接收的控制请求解析出实现控制所需的参数;
所述控制命令构建模块包括命令构建队列和命令构建线程组,根据HTTP命令解析模块解析出的控制参数构建远程控制系统能够识别的控制命令;
所述Socket Server模块基于Selector模型实现,包括Socket解析队列和Socket解析线程组,向远程控制系统转发控制命令构建模块构建的控制命令,接收控制响应并转发给HTTP Server模块;
各模块工作步骤如下:
(1)创建HTTP命令解析模块、控制命令构建模块和Socket Server模块所需的阻塞队列和线程组,各类阻塞队列与线程组构成生产者-消费者模式,线程组由newCachedThreadPool线程池创建;
(2)启动HTTP Server模块和 Socket Server模块,并在各自的Selector上注册读事件;Socket Server模块检测到读事件,即远程控制系统的连接请求,读取远程控制系统用户名和参数,进行用户认证;认证成功后,以用户名作为key,将触发读事件的套接字描述符存入远程控制系统哈希表;HTTP Server模块检测到读事件,将触发事件的套接字描述符插入到HTTP命令解析队列;
所述用户认证通过查询数据库中的用户名和密码完成;远程控制系统哈希表基于ConcurrentHashMap实现;
(3)HTTP命令解析线程读取套接字上的数据包,并解析出控制所需的参数,构建命令参数数据包,将其插入到命令构建队列;所述命令参数数据包中包括命令参数和HTTP描述符;
(4)命令构建线程从命令构建队列中读取命令参数数据包,获得远程控制系统用户名,并根据用户名从远程控制系统哈希表中获得Socket套接字描述符,构建控制命令包,将其作为附件注册套接字描述符的写事件;所述控制命令包由控制命令字段和HTTP描述符构成;
(5)Socket Server模块检测到套接字描述符写事件,将控制命令包中的控制命令字段发送给远程控制系统,并以控制命令包中的HTTP描述符为附件,注册该套接字描述符的读事件;
(6)Socket Server模块检测到读事件,即远程控制系统响应,将触发事件的套接字描述符插入到Socket解析队列;
(7)Socket解析线程从套接字上读取数据包并进行解析,构建响应数据包;从附件中获取HTTP套接字描述符,以响应数据包为附件,注册该描述符的写事件;
(8)HTTP Server模块检测到写事件,将附件中的响应数据包发送给Web服务器。
2.根据权利要求1所述的一种基于JAVA的网络传输协议转换中间件,其特征在于,所述Socket Server模块在处理读事件时,根据Socket解析线程从数据包中解析出的远程控制系统用户名,在远程控制系统哈希表中查找以该用户名为key的套接字描述符项,若存在则线程进行响应解析操作,否则进行用户认证操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510187186.0A CN104917814B (zh) | 2015-04-21 | 2015-04-21 | 一种基于java的网络传输协议转换中间件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510187186.0A CN104917814B (zh) | 2015-04-21 | 2015-04-21 | 一种基于java的网络传输协议转换中间件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104917814A CN104917814A (zh) | 2015-09-16 |
CN104917814B true CN104917814B (zh) | 2018-05-01 |
Family
ID=54086512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510187186.0A Active CN104917814B (zh) | 2015-04-21 | 2015-04-21 | 一种基于java的网络传输协议转换中间件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104917814B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109361723B (zh) * | 2018-04-18 | 2021-08-31 | 上海锐智集数电子有限公司 | 一种udp有效报文发送时序控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1722663A (zh) * | 2004-07-13 | 2006-01-18 | 联想(北京)有限公司 | 一种代理服务器系统及其实现代理通讯的方法 |
CN102404404A (zh) * | 2011-09-07 | 2012-04-04 | 航天科工仿真技术有限责任公司 | 一种分布式web应用与远程设备消息通信方法 |
CN102571412A (zh) * | 2011-11-30 | 2012-07-11 | 中国航空工业集团公司第六三一研究所 | 嵌入式分布式系统目标机服务器 |
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140201418A1 (en) * | 2011-11-14 | 2014-07-17 | United States Government, As Represented By The Secretary Of The Navy | Net-centric adapter for interfacing enterprises systems to legacy systems |
-
2015
- 2015-04-21 CN CN201510187186.0A patent/CN104917814B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1722663A (zh) * | 2004-07-13 | 2006-01-18 | 联想(北京)有限公司 | 一种代理服务器系统及其实现代理通讯的方法 |
CN102404404A (zh) * | 2011-09-07 | 2012-04-04 | 航天科工仿真技术有限责任公司 | 一种分布式web应用与远程设备消息通信方法 |
CN102571412A (zh) * | 2011-11-30 | 2012-07-11 | 中国航空工业集团公司第六三一研究所 | 嵌入式分布式系统目标机服务器 |
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104917814A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107562666B (zh) | 基于spi总线的设备间通信的方法、系统及相关装置 | |
CN104317255A (zh) | 基于物联网的智能家居控制系统 | |
CN103441861B (zh) | 一种数据记录生成方法及装置 | |
CN103095703B (zh) | 一种实现网络与串口数据交互的方法、设备及系统 | |
CN103248526A (zh) | 实现带外监控管理的通信设备、方法及主从切换方法 | |
CN102707696B (zh) | 一种多串口数据传输方法及传输中心系统 | |
CN102932224A (zh) | 基于can网络的数据通讯系统及基于该系统的数据通讯方法 | |
CN106598889A (zh) | 一种基于fpga夹层板的sata主控器 | |
CN102811152B (zh) | 一种多主总线网络通讯实时交易数据交换实现方法 | |
CN103004132A (zh) | 使用微片用于时钟门控的技术 | |
CN107579894B (zh) | 一种基于fpga的ebr1553总线协议实现装置 | |
CN102546542A (zh) | 电子系统及其嵌入式设备和中转设备 | |
CN104917814B (zh) | 一种基于java的网络传输协议转换中间件 | |
CN102984272B (zh) | 一种远程控制移动终端通信能力的系统及其方法 | |
CN114039808A (zh) | 基于can的多通道的can/lin/sent转发协议 | |
CN110995869B (zh) | 机器数据收集方法、装置、设备及介质 | |
CN106941430A (zh) | 一种基于fpga的可编程精确网络报文构造和发送单元 | |
CN106330397B (zh) | 一种ZigBee和Modbus RTU协议实现数据交互的方法和装置 | |
CN103944738A (zh) | 一种支持功能扩展的交换机 | |
CN101320359A (zh) | 串口设备控制电路及控制方法 | |
CN108664305A (zh) | 实现页面功能复用的方法及装置 | |
CN104486296A (zh) | 一种身份识别装置及方法 | |
CN1972314B (zh) | 以太网接口上模拟串行接口的方法以及应用该方法的部件 | |
Kuang et al. | A Modbus Protocol Stack Compatible with RTU/TCP Frames and Embedded Application | |
WO2016184025A1 (zh) | 一种设备管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |