CN104363212B - 一种基于Lua的socket通信语义解析方法和应用系统 - Google Patents

一种基于Lua的socket通信语义解析方法和应用系统 Download PDF

Info

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
Application number
CN201410602650.3A
Other languages
English (en)
Other versions
CN104363212A (zh
Inventor
张厚瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Si Tech Information Technology Co Ltd
Original Assignee
Beijing Si Tech Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Si Tech Information Technology Co Ltd filed Critical Beijing Si Tech Information Technology Co Ltd
Priority to CN201410602650.3A priority Critical patent/CN104363212B/zh
Publication of CN104363212A publication Critical patent/CN104363212A/zh
Application granted granted Critical
Publication of CN104363212B publication Critical patent/CN104363212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols 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

一种基于Lua的socket通信语义解析方法和应用系统
技术领域
本发明涉及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通信报文的解析函数。
CN201410602650.3A 2014-10-31 2014-10-31 一种基于Lua的socket通信语义解析方法和应用系统 Active CN104363212B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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客户端功能动态更新的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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