CN104363212A - 一种基于Lua的socket通信语义解析方法、适配器和应用系统 - Google Patents

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

Info

Publication number
CN104363212A
CN104363212A CN201410602650.3A CN201410602650A CN104363212A CN 104363212 A CN104363212 A CN 104363212A CN 201410602650 A CN201410602650 A CN 201410602650A CN 104363212 A CN104363212 A CN 104363212A
Authority
CN
China
Prior art keywords
lua
lua script
message
socket communication
socket
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.)
Granted
Application number
CN201410602650.3A
Other languages
English (en)
Other versions
CN104363212B (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,const char*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 (10)

1.一种基于Lua的socket通信语义解析方法,其特征在于,包括:
步骤1,配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
步骤2,定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用步骤1配置的lua脚本;
步骤3,通过调用的lua脚本解析socket通信报文。
2.根据权利要求1所述的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.根据权利要求1所述的socket通信语义解析方法,其特征在于,所述步骤3中通过调用的lua脚本解析socket通信报文具体包括:获得socket通信报文的交易编码,根据交易编码区分socket通信报文的语义,再从lua脚本中选择与socket通信报文相对应的解析函数,通过选择的解析函数格式化socket通信报文。
6.根据权利要求5所述的socket通信语义解析方法,其特征在于,若lua脚本中没有与socket通信报文相对应的解析函数,则在lua脚本内部定义用于解析该socket通信报文的解析函数。
7.一种基于Lua的socket适配器,其特征在于,包括:
Lua脚本定制模块,其用于配置lua脚本,并在lua脚本中定义对各种类型的报文进行解析的解析函数;
Lua脚本调用模块,其用于定义调用lua脚本的函数call_lua_func,再采用函数call_lua_func调用配置的lua脚本;
报文解析模块,其用于通过调用的lua脚本解析socket通信报文。
8.根据权利要求7所述的socket适配器,其特征在于,所述解析函数的数据类型包括字符型、整型和双精度实型。
9.根据权利要求7所述的socket适配器,其特征在于,所述通过调用的lua脚本解析socket通信报文具体包括:获得socket通信报文的交易编码,根据交易编码区分socket通信报文的语义,再从lua脚本中选择与socket通信报文相对应的解析函数,通过选择的解析函数格式化socket通信报文。
10.一种采用权利要求7至9中任一所述的socket适配器的应用系统,其特征在于,包括消息总线、socket适配器和外围平台:
消息总线,用于向socket适配器发送总线消息,并接收Socket适配器反馈的对应总线消息的应答报文串;
socket适配器,用于读取总线消息,并通过函数call_lua_func调用lua脚本解析总线消息的语义,得到发向外围平台的请求报文串,并将请求报文串发送给外围平台;还用于通过函数call_lua_func调用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 true CN104363212A (zh) 2015-02-18
CN104363212B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107172013A (zh) * 2017-04-18 2017-09-15 北京思特奇信息技术股份有限公司 一种数据传输方法及系统
CN107423079A (zh) * 2017-03-10 2017-12-01 武汉斗鱼网络科技有限公司 一种同步脚本的方法、解析消息的方法和设备
CN110162416A (zh) * 2019-05-28 2019-08-23 深圳市智物联网络有限公司 一种工控设备的控制方法、系统、适配器及可读存储介质
CN110278272A (zh) * 2019-06-24 2019-09-24 四川新网银行股份有限公司 模拟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 (2)

* Cited by examiner, † Cited by third party
Title
刘彬彬,李伟明: "《C语言开发实战宝典》", 31 January 2011 *
苏建美,周仲礼,包俊强,徐彬: ""网络嗅探器中Lua嵌入脚本的设计"", 《软件》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423079A (zh) * 2017-03-10 2017-12-01 武汉斗鱼网络科技有限公司 一种同步脚本的方法、解析消息的方法和设备
CN107172013A (zh) * 2017-04-18 2017-09-15 北京思特奇信息技术股份有限公司 一种数据传输方法及系统
CN107172013B (zh) * 2017-04-18 2020-08-04 北京思特奇信息技术股份有限公司 一种数据传输方法及系统
CN110162416A (zh) * 2019-05-28 2019-08-23 深圳市智物联网络有限公司 一种工控设备的控制方法、系统、适配器及可读存储介质
CN110162416B (zh) * 2019-05-28 2023-03-03 深圳市智物联网络有限公司 一种工控设备的控制方法、系统、适配器及可读存储介质
CN110278272A (zh) * 2019-06-24 2019-09-24 四川新网银行股份有限公司 模拟Socket请求的通用方法

Also Published As

Publication number Publication date
CN104363212B (zh) 2018-10-19

Similar Documents

Publication Publication Date Title
Xue et al. The socket programming and software design for communication based on client/server
CN110324169B (zh) 一种接口管理的方法和装置
CN104363212A (zh) 一种基于Lua的socket通信语义解析方法、适配器和应用系统
CN110880146A (zh) 区块链上链方法、装置、电子设备及存储介质
US10334084B2 (en) Communication method and system based on assembled communication protocol stack
CN102866925A (zh) 一种中间件与用户界面的通信方法和系统
CN114124929A (zh) 跨网络的数据处理方法和装置
CN107368334B (zh) 一种业务插件交互系统及方法
CN101690005A (zh) 移动终端的基于web的空中预配置和激活
CN115102981A (zh) 数据处理方法、物联网系统、电子设备及计算机存储介质
CN113010332A (zh) 一种远程服务调用方法、装置、设备及存储介质
CN114157537A (zh) 一种通用设备网关实现多源异构数据接入的系统及方法
CN107172013B (zh) 一种数据传输方法及系统
CN105068820A (zh) 一种基于SSH框架集成Axis开发并发布Web Service的方法
CN103677854A (zh) 适用于云计算环境下的osgi-web框架的设计方法和系统
CN101155177B (zh) 基于共用协议的数据通道共享系统及方法
CN104185249A (zh) 基于安卓系统的局域网设备发现方法及动态链接库
CN102148869A (zh) Java应用程序向本地传递信息的方法及设备
CN104657124A (zh) 一种基于xml rpc集成pdm系统的方法
CN106844156A (zh) 智能建筑综合管理平台系统中wcf通信消息拦截方法
CN105681208A (zh) 一种智能路由器的消息集中处理方法及系统
CN105376254A (zh) 一种upnp是否成功穿越nat的检测方法
CN103365655A (zh) 安全监察系统操作轨迹记录方法
CN117076160B (zh) 组件调用方法、装置、设备和存储介质
KR102250521B1 (ko) 에너지 관리 시스템을 위한 데이터 전단 처리기 프로그램 생성 시스템 및 방법

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