CN104363212B - 一种基于Lua的socket通信语义解析方法和应用系统 - Google Patents
一种基于Lua的socket通信语义解析方法和应用系统 Download PDFInfo
- Publication number
- CN104363212B CN104363212B CN201410602650.3A CN201410602650A CN104363212B CN 104363212 B CN104363212 B CN 104363212B CN 201410602650 A CN201410602650 A CN 201410602650A CN 104363212 B CN104363212 B CN 104363212B
- Authority
- CN
- China
- Prior art keywords
- lua
- socket
- scripts
- socket communication
- function
- 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
Classifications
-
- 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/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- 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/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于Lua的socket通信语义解析方法、适配器和应用系统,所述方法包括:步骤1,配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;步骤2,定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用步骤1配置的lua脚本;步骤3,通过调用的lua脚本解析socket通信报文。基于该方法的原理,本发明还给出了相应的socket适配器和应用系统。本发明是基于lua语言,适用于不同协议的socket通信,使socket通信与接口语义分离,实现不同socket通信报文可配置,提高了程序复用度,减少了开发工作量。
Description
技术领域
本发明涉及socket套接字通信技术领域,特别是涉及一种基于Lua的 socket通信语义解析方法、适配器和应用系统。
背景技术
Socket通信是网络中计算机进行通信的一种方法,是基于TCP/IP协议栈之上的通讯协议,应用程序通过调用系统提供的socket库函数实现网络里计算机间的通信。在通信过程中,tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:
客户端向服务器发送一个SYN J;
服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1;
客户端再想服务器发一个确认ACK K+1。
“三次握手”的流程如图1所示,tcp建立连接的过程是通过socket 应用实现的,可以看做是socket技术的一种特殊实现场景。
在tcp/ip协议栈之上采用socket通信时,客户端与服务端需要约定通信报文格式,以便通信双方可以理解通信语义,约定通信语义的过程即定义接口规范。
一个完整的接口规范需要包含通信过程、通信报文等。通信过程即明确通信过程中连接方式(长连接还是短连接),是否需要登录、维持会话等通信管理功能。而通信报文是指约定通信语义。
由于socket基于TCP/IP协议栈,因此在定义接口规范时,灵活性较大。不同应用约定的接口规范不同。比较典型的通信接口协议如MML协议,H2 协议,DCC协议等等。由于接口规范不同,通信过程和通信报文均不相同,因此,在实际程序开发时,需要针对各种协议单独开发。
Lua是一个小巧的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
因此,本发明提出了一种基于Lua的socket通信语义解析方法、适配器和应用系统。
发明内容
本发明所要解决的技术问题是提供一种基于Lua的socket通信语义解析方法、适配器和应用系统,用于解决socket通信中各种不同协议的通信语义解析问题。
本发明解决上述技术问题的技术方案如下:一种基于Lua的socket通信语义解析方法,包括:
步骤1,配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
步骤2,定义调用lua脚本的函数call_lua_func,再采用函数 call_lua_func调用步骤1配置的lua脚本;
步骤3,通过调用的lua脚本解析socket通信报文。
本发明的技术方案还包括一种基于Lua的socket适配器,包括:
Lua脚本定制模块,其用于配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
Lua脚本调用模块,其用于定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用配置的lua脚本;
报文解析模块,其用于通过调用的lua脚本解析socket通信报文。
本发明的技术方案还包括一种应用系统,其特征在于,包括消息总线、 socket适配器和外围平台:
消息总线,用于向socket适配器发送总线消息,并接收Socket适配器反馈的对应总线消息的应答报文串;
socket适配器,用于读取总线消息,并通过函数call_lua_func调用 lua脚本解析总线消息的语义,得到发向外围平台的请求报文串,并将请求报文串发送给外围平台;还用于通过函数call_lua_func调用lua脚本解析外围平台反馈的应答报文串的语义,得到对应总线消息的应答报文串,再将该对应总线消息的应答报文串发送给消息总线;
外围平台,用于在接收到请求报文串后,向socket适配器发送应答报文串。
本发明的有益效果是:本发明是基于lua语言,提出了一种针对socket 通信中各种不同协议的通用语义解析方法,适用于不同协议,使socket通信与接口语义分离,实现不同socket通信报文可配置,提高了程序复用度,减少了开发工作量。
具体地说,本发明的有益效果主要体现在以下三个方面。
1)使socket通信与接口语义分离。实现不同socket通信报文可配置。极大提高socket程序的配置化程度。
2)提高程序复用度。不再针对不同socket接口规范开发不同应用程序,提高接口程序内聚。大大减少重复开发工作量。
3)修改配置在线加载。改变以往修改配置需要重启程序的维护方式。在线升级,更快响应用户需求。
附图说明
图1为现有技术中tcp建立连接的流程示意图;
图2为本发明所述的一种基于Lua脚本的socket通信语义解析方法的流程示意图;
图3为本发明实施例中调用lua脚本的流程示意图;
图4为本发明实施例中lua脚本内部程序运行的流程示意图;
图5为本发明实施例中基于socket适配器的应用系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图2所示,本实施例给出了一种基于Lua脚本的socket通信语义解析方法,包括:
步骤1,配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
步骤2,定义调用lua脚本的函数call_lua_func,再采用函数 call_lua_func调用步骤1配置的lua脚本;
步骤3,通过调用的lua脚本解析socket通信报文。
如图3所示,所述步骤2中采用函数call_lua_func调用lua脚本具体包括:
步骤21,获取lua脚本配置文件,并基于lua脚本配置文件获取lua 脚本中定义的解析函数的数据类型;需注意的是,若lua脚本配置文件被修改,则重新加载lua脚本配置文件的内容,再执行步骤21。
步骤22,根据lua脚本中定义的函数的数据类型,设置函数 call_lua_func中入参数的数据类型。
步骤23,根据入参数的数据类型,函数call_lua_func调用lua脚本中定义的函数。
步骤24,解析调用的lua脚本中定义的解析函数,并根据解析出的函数的数据类型,设置函数call_lua_func中出参数的数据类型。
本实施例中,所述解析函数的数据类型包括字符型、整型和双精度实型。
另外,所述步骤3中通过调用的lua脚本解析socket通信报文具体包括:获得socket通信报文的交易编码,根据交易编码区分socket通信报文的语义,再从lua脚本中选择与socket通信报文相对应的解析函数,通过选择的解析函数格式化socket通信报文。
这里,若事先配置的lua脚本中没有与socket通信报文相对应的解析函数,则在lua脚本内部定义用于解析该socket通信报文的解析函数。
对应地,本实施例还给出了一种基于Lua脚本的socket适配器,包括:
Lua脚本定制模块,其用于配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
Lua脚本调用模块,其用于定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用配置的lua脚本;
报文解析模块,其用于通过调用的lua脚本解析socket通信报文。
本实施例在具体实施过程中,主要有两个部分。
第一部分,定义调用lua脚本的函数call_lua_func。
call_lua_func函数原型为:
int call_lua_func(lua_State*L,char*filename,const char*func, constchar*sig,...)
各参数说明如下:
lua_State*L=lua_open();
filename为lua脚本配置文件名称;
func为lua脚本中定义的函数名称;
sig等表示lua函数返回值和形式参数的类型;
该函数的处理流程图即如图3所示。
第二部分,通过lua脚本解析socket通信语义。
在lua脚本中定义不同的函数,供应用程序调用,进行socket报文语义的解析。报文语义解析是指通过lua脚本语言解析报文字符串,解析过程可以用lua自带函数,也可以自定义函数。如下所示,介绍了两个常用的解析函数样例。
(1)、function inmsg_deal(trans_code,inmsg)--对入参报文 inmsg的处理部分。
(2)、function outmsg_deal(trans_code,inlength,inmsg)--对出参报文inmsg的处理部分
进行socket通信报文解析的解析函数的编制属于现有技术,本领域技术人员将常用的各类解析函数按lua脚本的编制要求进行对应调整,即可获得能解析各类型socket通信报文的解析函数。如图4所示,在lua脚本内定义解析函数后,根据socket通信报文的交易编码,区分不同解析语义,通过lua强大的字符串处理能力,格式化解析通信报文。针对特殊语义,在 lua脚本内部定义函数。
基于该socket适配器,如图5所示,本实施例还给出了对应的应用系统,包括消息总线、socket适配器和外围平台。
所述消息总线,用于向socket适配器发送总线消息,并接收Socket适配器反馈的对应总线消息的应答报文串;
所述socket适配器,用于读取总线消息,并通过函数call_lua_func 调用lua脚本解析总线消息的语义,得到发向外围平台的请求报文串,并将请求报文串发送给外围平台;还用于通过函数call_lua_func调用lua脚本解析外围平台反馈的应答报文串的语义,得到对应总线消息的应答报文串,再将该对应总线消息的应答报文串发送给消息总线;
所述外围平台,用于在接收到请求报文串后,向socket适配器发送应答报文串。
Socket适配器分为发起方和落地方两种,每一种又分为长连接、短连接方式。下面以发起方短连接Socket适配器为例介绍上述应用系统的具体实施过程。
发起方短连接Socket适配器的处理流程为:
1)读取业务配置文件,初始化程序。将日志目录、lua脚本文件、对端地址和端口、心跳时间、sig等数据加载到内存。
2)与应用集成平台建立通道,向消息总线注册服务ID,监听总线事件。如总线有消息,则读取该消息,解析消息的交易编码。
3)通过call_lua_func调用lua脚本函数。解析总线消息的语义,得到发向外围平台的请求报文串。
4)与外围平台建立通信通道,发送请求报文串。
5)接收外围平台的应答报文串。
6)通过call_lua_func调用lua脚本函数。解析外围平台的报文语义,得到给消息总线应答的报文串。
7)关闭与外围平台的连接通道。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种socket适配器的应用系统,其特征在于,包括消息总线、socket适配器和外围平台:
消息总线,用于向socket适配器发送总线消息,并接收Socket适配器反馈的对应总线消息的应答报文串;
socket适配器,用于读取总线消息,并通过函数call_lua_func调用lua脚本解析总线消息的语义,得到发向外围平台的请求报文串,并将请求报文串发送给外围平台;还用于通过函数call_lua_func调用lua脚本解析外围平台反馈的应答报文串的语义,得到对应总线消息的应答报文串,再将该对应总线消息的应答报文串发送给消息总线;
外围平台,用于在接收到请求报文串后,向socket适配器发送应答报文串;
所述socket适配器包括:
Lua脚本定制模块,其用于配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
Lua脚本调用模块,其用于定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用配置的lua脚本;
报文解析模块,其用于通过调用的lua脚本解析socket通信报文;
其中,所述通过调用的lua脚本解析socket通信报文具体包括:获得socket通信报文的交易编码,根据交易编码区分socket通信报文的语义,再从lua脚本中选择与socket通信报文相对应的解析函数,通过选择的解析函数格式化socket通信报文;所述socket通信报文即为所述消息总线发送至所述socket的总线信息;
所述解析函数的数据类型包括字符型、整型和双精度实型。
2.一种基于如权利要求1所述的socket适配器应用系统的socket通信语义解析方法,其特征在于,包括:
步骤1,配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
步骤2,定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用步骤1配置的lua脚本;
步骤3,通过调用的lua脚本解析socket通信报文;
所述步骤2中采用函数call_lua_func调用lua脚本具体包括:
步骤21,获取lua脚本配置文件,并基于lua脚本配置文件获取lua脚本中定义的解析函数的数据类型;
步骤22,根据lua脚本中定义的函数的数据类型,设置函数call_lua_func中入参数的数据类型;
步骤23,根据入参数的数据类型,函数call_lua_func调用lua脚本中定义的函数;
步骤24,解析调用的lua脚本中定义的解析函数,并根据解析出的函数的数据类型,设置函数call_lua_func中出参数的数据类型。
3.根据权利要求2所述的socket通信语义解析方法,其特征在于,若lua脚本配置文件被修改,则重新加载lua脚本配置文件的内容,再执行步骤21。
4.根据权利要求2所述的socket通信语义解析方法,其特征在于,所述解析函数的数据类型包括字符型、整型和双精度实型。
5.根据权利要求2所述的socket通信语义解析方法,其特征在于,所述步骤3中通过调用的lua脚本解析socket通信报文具体包括:获得socket通信报文的交易编码,根据交易编码区分socket通信报文的语义,再从lua脚本中选择与socket通信报文相对应的解析函数,通过选择的解析函数格式化socket通信报文。
6.根据权利要求5所述的socket通信语义解析方法,其特征在于,若lua脚本中没有与socket通信报文相对应的解析函数,则在lua脚本内部定义用于解析该socket通信报文的解析函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410602650.3A CN104363212B (zh) | 2014-10-31 | 2014-10-31 | 一种基于Lua的socket通信语义解析方法和应用系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410602650.3A CN104363212B (zh) | 2014-10-31 | 2014-10-31 | 一种基于Lua的socket通信语义解析方法和应用系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104363212A CN104363212A (zh) | 2015-02-18 |
CN104363212B true CN104363212B (zh) | 2018-10-19 |
Family
ID=52530438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410602650.3A Active CN104363212B (zh) | 2014-10-31 | 2014-10-31 | 一种基于Lua的socket通信语义解析方法和应用系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104363212B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423079A (zh) * | 2017-03-10 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 一种同步脚本的方法、解析消息的方法和设备 |
CN107172013B (zh) * | 2017-04-18 | 2020-08-04 | 北京思特奇信息技术股份有限公司 | 一种数据传输方法及系统 |
CN110162416B (zh) * | 2019-05-28 | 2023-03-03 | 深圳市智物联网络有限公司 | 一种工控设备的控制方法、系统、适配器及可读存储介质 |
CN110278272B (zh) * | 2019-06-24 | 2022-04-15 | 四川新网银行股份有限公司 | 模拟Socket请求的通用方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150451A (zh) * | 2006-09-18 | 2008-03-26 | 中兴通讯股份有限公司 | 一种网络设备单板状态监测系统及其监测方法 |
CN101196812A (zh) * | 2007-12-14 | 2008-06-11 | 上海科泰世纪科技有限公司 | 构件化软件系统实现脚本语言调用多输出参数接口的方法 |
CN104111855A (zh) * | 2014-07-29 | 2014-10-22 | 广东能龙教育股份有限公司 | 一种基于Lua的iOS客户端功能动态更新的方法 |
-
2014
- 2014-10-31 CN CN201410602650.3A patent/CN104363212B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150451A (zh) * | 2006-09-18 | 2008-03-26 | 中兴通讯股份有限公司 | 一种网络设备单板状态监测系统及其监测方法 |
CN101196812A (zh) * | 2007-12-14 | 2008-06-11 | 上海科泰世纪科技有限公司 | 构件化软件系统实现脚本语言调用多输出参数接口的方法 |
CN104111855A (zh) * | 2014-07-29 | 2014-10-22 | 广东能龙教育股份有限公司 | 一种基于Lua的iOS客户端功能动态更新的方法 |
Non-Patent Citations (1)
Title |
---|
"网络嗅探器中Lua嵌入脚本的设计";苏建美,周仲礼,包俊强,徐彬;《软件》;20131231;第34卷(第7期);第55-58页摘要、第1.3节及图1-1 * |
Also Published As
Publication number | Publication date |
---|---|
CN104363212A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104363212B (zh) | 一种基于Lua的socket通信语义解析方法和应用系统 | |
CN102902537B (zh) | 基于FastCGI和HTML模板的嵌入式WEB MVC开发框架 | |
CN106559251A (zh) | 一种基于yang模型的编译方法、及对应的接口、组件和系统 | |
CN109815107B (zh) | 自动化测试的方法和装置 | |
CN108337236A (zh) | 一种基于Protobuf和HTTP/1.1的gRPC调用方法及装置 | |
CN100426750C (zh) | 一种生成两套网管系统的方法 | |
EP3157222A1 (en) | Communication method and system based on assembled communication protocol stack | |
CN110213113B (zh) | 基站的web配置管理方法及基站 | |
CN101690005B (zh) | 移动终端的基于web的空中预配置和激活 | |
CN103019874A (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN113434175B (zh) | 数据处理方法、装置、存储介质及设备 | |
CN102866925A (zh) | 一种中间件与用户界面的通信方法和系统 | |
CN114157537A (zh) | 一种通用设备网关实现多源异构数据接入的系统及方法 | |
CN103780455A (zh) | 基于ttcn-3的tetra数字集群协议测试方法和系统 | |
CN112988409B (zh) | 一种接口调用方法、装置、计算机设备及存储介质 | |
CN106230889A (zh) | 移动应用业务组件资源管理方法及系统 | |
CN105068820B (zh) | 一种基于SSH框架集成Axis开发并发布Web Service的方法 | |
CN107172013B (zh) | 一种数据传输方法及系统 | |
CN111176657B (zh) | 基于ttcn-3测试平台的c语言编解码器实现方法和系统 | |
CN103677854A (zh) | 适用于云计算环境下的osgi-web框架的设计方法和系统 | |
CN101867484A (zh) | 一种设备升级的方法及系统 | |
CN106911792A (zh) | 一种基于Samba服务器的手机文件共享系统 | |
CN109508193A (zh) | 一种应用部署运行方法、装置、终端设备和介质 | |
CN102075646B (zh) | 呼叫中心设备控制系统及方法 | |
CN108052590B (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 |