CN102780731A - 客户端通信方法和装置 - Google Patents
客户端通信方法和装置 Download PDFInfo
- Publication number
- CN102780731A CN102780731A CN2011101412397A CN201110141239A CN102780731A CN 102780731 A CN102780731 A CN 102780731A CN 2011101412397 A CN2011101412397 A CN 2011101412397A CN 201110141239 A CN201110141239 A CN 201110141239A CN 102780731 A CN102780731 A CN 102780731A
- Authority
- CN
- China
- Prior art keywords
- link library
- dynamic link
- target communication
- dynamic
- calling
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种客户端通信方法和装置,其中方法包括:通过动态库接口接收目标通信设备的动态链接库的描述对象;根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。本发明的客户端通信方法和装置,通过基于JNA封装的类库,调用目标通信设备的动态链接库,提高了开发效率以及票务系统和设备之间的通信效率,提高了票务系统的工作水平。
Description
技术领域
本发明涉及通信技术,特别涉及一种客户端通信方法和装置。
背景技术
票务系统在工作时,需要与多种其他设备之间进行通信以完成票务工作。该票务系统采用Eclipse rcp这一富客户端技术框架,该技术是基于Java的;通过socket方案与票务系统通信的其他设备,经常采用c、c++等其他语言封装的设备功能接口。票务系统在与设备进行通信时,需要调用设备中的上述功能接口,由于语言不同,socket解决方案要求两种不同的语言在各自端编写代码,例如,票务系统端的Java本地接口侧,则需要编写socket通信代码,以实现不同语言之间的通信。
上述现有技术存在如下技术缺陷:由于票务系统与设备之间的通信,需要两种不同的语言在各自端编写复杂的代码,使得开发效率低,从而造成设备之间的通信效率也很低,严重影响票务系统的工作。
发明内容
本发明的目的是提供一种客户端通信方法和装置,以提高票务系统和设备之间的通信效率和开发效率。
本发明提供一种客户端通信方法,包括:
通过动态库接口接收目标通信设备的动态链接库的描述对象;
根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
本发明提供一种客户端通信装置,包括:
接收模块,用于通过动态库接口接收目标通信设备的动态链接库的描述对象;
调用模块,用于根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
本发明的客户端通信方法和装置,通过基于JNA封装的类库,调用目标通信设备的动态链接库,提高了开发效率以及票务系统与设备之间的通信效率,提高了票务系统的工作水平。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明客户端通信方法实施例的流程示意图;
图2为本发明客户端通信方法实施例中的调用信令示意图;
图3为本发明客户端通信装置实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的主要技术方案在于,客户端通过动态库接口接收目标通信设备的动态链接库的描述对象;并根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
例如,采用基于JNA(Java Native Access)封装的类库,用于票务系统的服务接口和外部设备之间的通信;该类库提供一组Java工具类,可以用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何socket通信代码;开发人员只要在一个java接口中描述目标native library的函数与结构,类库将自动实现Java接口到native function的映射。
下面通过附图和具体实施例,对本发明的技术方案做进一步的详细描述。
实施例一
图1为本发明客户端通信方法实施例的流程示意图,本实施例的通信方法以票务系统和其他设备进行通信为例,其中,票务系统作为客户端,其他设备作为目标通信设备。如图1所示,该方法可以包括以下步骤:
步骤101、客户端通过动态库接口,接收目标通信设备的动态链接库的描述对象;
例如,当需要与某设备进行通信时,该设备可以称为目标通信设备。
其中,动态库接口的创建可以为,首先,获取目标通信设备的动态链接库,以及该动态链接库中的各个功能接口。接着,可以根据上述的各功能接口,在票务系统的服务接口端建立动态库接口,该动态库接口可以用于调用目标通信设备的动态链接库中的功能接口。
例如,票务系统的服务接口端,具有一Java接口,该接口即为动态库接口;开发人员可以在该Java接口中提供一目标通信设备的动态链接库的描述对象,该描述对象可以为native library的函数与结构。
步骤102、客户端根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
例如,客户端可以根据步骤101中所接收到的描述对象,建立与目标设备的动态链接库之间的映射,并根据该映射,调用目标通信设备的动态链接库,以实现与设备通信。
具体的,客户端票务系统与目标通信设备之间的通信原理,可以参见图2,图2为本发明客户端通信方法实施例中的调用信令示意图。如图2所示,由票务系统中的application code向com.Sun.jna.native执行load library(),接着,创建动态链接库的调用代理JNA类库,即the dll proxy。再执行lock workstation(),通过调用代理JNA类库建立与目标设备的动态链接库之间的映射。最后,即可通过调用代理JNA类库,执行lock work station(),调用目标通信设备的动态链接库user32.dll。
其中,图2中所示的流程为底层实现流程,com.Sun.jna.native以及the dllproxy等均为底层与application code连接。步骤101中的动态库接口,继承类库提供的jar包中的封装好的加载dll的类(即the dll proxy),可以通过该类实现对目标通信设备的动态链接库中的功能接口(如某一方法)的调用,从而实现对设备中功能的控制。
例如,可以新建一个BomFactory类(动态库接口),在类中通过BOMDLL.INSTANCE来得到一个BOMDLL对象(调用代理JNA类库)。当执行初始化制票机操作时,则需要BOMDLL这个对象来调用制票机设备本身的功能接口ZebraInit()方法;当执行看票号操作时,则需要通过BOMDLL对象调用制票机设备本身的功能接口ZebraCheckNum()方法来实现。
通过在票务系统的Java服务接口端,基于JNA的封装类库,调用目标通信设备中的其他语言封装的动态链接库,打破了Java和原生代码原本泾渭分明的界限,实现了Java和原生代码的强强联合,在各自擅长的领域分工合作,快速解决问题;基于JNA的封装可以方便地利用原生代码的优势:执行速度快,可以直接操作硬件,机器码不容易被破解等;原生代码可以通过回调Java函数,利用Java的优势:开发效率高,自动内存管理,跨平台,类库丰富,网络功能强大,支持多种脚本语言等;从而大大提高了开发效率,使得对设备功能接口的调用更加快速,且利于维护。
本实施例的客户端通信方法,通过基于JNA封装的类库,调用目标通信设备的动态链接库,提高了开发效率以及票务系统与设备之间的通信效率,提高了票务系统的工作水平。
实施例二
图3为本发明客户端通信装置实施例的结构示意图,本实施例的装置可以执行本发明任意实施例所述的客户端通信方法,例如,该客户端通信装置可以为票务系统装置。如图3所示,该装置可以包括接收模块31和调用模块32。
其中,接收模块31可以通过动态库接口接收目标通信设备动态链接库的描述对象;调用模块32可以用于根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
进一步的,接收模块31还用于获取所述目标通信设备的动态链接库中的功能接口,并根据所述功能接口建立所述动态库接口。
进一步的,调用模块32可以包括映射单元和通信单元。其中,映射单元可以根据所述描述对象,建立与所述目标设备的动态链接库之间的映射;通信单元可以根据所述映射,调用所述动态链接库。
进一步的,映射单元可以包括:创建子单元和处理子单元。其中,创建子单元可以创建所述动态链接库的调用代理JNA类库;处理子单元可以通过所述调用代理JNA类库建立与目标设备的动态链接库之间的映射。
本实施例的客户端通信装置,通过设置接收模块和调用模块等,可以基于JNA封装的类库,调用目标通信设备的动态链接库,提高了开发效率以及票务系统和设备之间的通信效率,提高了票务系统的工作水平。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种客户端通信方法,其特征在于,包括:
通过动态库接口接收目标通信设备的动态链接库的描述对象;
根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
2.根据权利要求1所述的客户端通信方法,其特征在于,通过动态库接口接收目标通信设备的动态链接库的描述对象之前,还包括:
获取所述目标通信设备的动态链接库中的功能接口;
根据所述功能接口建立所述动态库接口。
3.根据权利要求1所述的客户端通信方法,其特征在于,根据所述描述对象,调用所述动态链接库,包括:
根据所述描述对象,建立与所述目标通信设备的动态链接库之间的映射;
根据所述映射,调用所述动态链接库。
4.根据权利要求3所述的客户端通信方法,其特征在于,所述建立与所述目标通信设备的动态链接库之间的映射,包括:
创建所述动态链接库的调用代理JNA类库;
通过所述调用代理JNA类库建立与目标通信设备的动态链接库之间的映射;
所述调用所述动态链接库,包括:通过所述调用代理JNA类库调用所述动态链接库。
5.一种客户端通信装置,其特征在于,包括:
接收模块,用于通过动态库接口接收目标通信设备的动态链接库的描述对象;
调用模块,用于根据所述描述对象,调用所述动态链接库,实现与所述目标通信设备之间的通信。
6.根据权利要求5所述的客户端通信装置,其特征在于,
所述接收模块,还用于获取所述目标通信设备的动态链接库中的功能接口,并根据所述功能接口建立所述动态库接口。
7.根据权利要求5所述的客户端通信装置,其特征在于,所述调用模块包括:
映射单元,用于根据所述描述对象,建立与所述目标通信设备的动态链接库之间的映射;
通信单元,用于根据所述映射,调用所述动态链接库。
8.根据权利要求7所述的客户端通信装置,其特征在于,所述映射单元包括:
创建子单元,用于创建所述动态链接库的调用代理JNA类库;
处理子单元,用于通过所述调用代理JNA类库建立与目标通信设备的动态链接库之间的映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101412397A CN102780731A (zh) | 2011-05-13 | 2011-05-27 | 客户端通信方法和装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110124406 | 2011-05-13 | ||
CN201110124406.7 | 2011-05-13 | ||
CN2011101412397A CN102780731A (zh) | 2011-05-13 | 2011-05-27 | 客户端通信方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102780731A true CN102780731A (zh) | 2012-11-14 |
Family
ID=47125484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101412397A Pending CN102780731A (zh) | 2011-05-13 | 2011-05-27 | 客户端通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102780731A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750470A (zh) * | 2013-12-27 | 2015-07-01 | 广州华多网络科技有限公司 | 客户端与应用的通讯方法及装置 |
CN111459489A (zh) * | 2020-02-27 | 2020-07-28 | 湖南大学 | 一种动态库自动服务化封装方法、系统及应用 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102322A (zh) * | 2007-08-24 | 2008-01-09 | 华为技术有限公司 | 一种通过图形化界面实现远程控制的方法、系统及客户端 |
CN101303656A (zh) * | 2008-06-06 | 2008-11-12 | 中国科学院计算技术研究所 | 一种Java应用程序远程直接内存访问方法 |
CN101599869A (zh) * | 2008-06-05 | 2009-12-09 | 国网南京自动化研究院 | 一种基于网络的仿真测试远程控制方法 |
CN101883122A (zh) * | 2010-07-30 | 2010-11-10 | 迈普通信技术股份有限公司 | 安全连接创建方法以及用于创建安全连接的客户端设备 |
CN101976414A (zh) * | 2010-10-26 | 2011-02-16 | 复旦大学 | 服装大规模定制供应链网格模型实现系统 |
-
2011
- 2011-05-27 CN CN2011101412397A patent/CN102780731A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102322A (zh) * | 2007-08-24 | 2008-01-09 | 华为技术有限公司 | 一种通过图形化界面实现远程控制的方法、系统及客户端 |
CN101599869A (zh) * | 2008-06-05 | 2009-12-09 | 国网南京自动化研究院 | 一种基于网络的仿真测试远程控制方法 |
CN101303656A (zh) * | 2008-06-06 | 2008-11-12 | 中国科学院计算技术研究所 | 一种Java应用程序远程直接内存访问方法 |
CN101883122A (zh) * | 2010-07-30 | 2010-11-10 | 迈普通信技术股份有限公司 | 安全连接创建方法以及用于创建安全连接的客户端设备 |
CN101976414A (zh) * | 2010-10-26 | 2011-02-16 | 复旦大学 | 服装大规模定制供应链网格模型实现系统 |
Non-Patent Citations (3)
Title |
---|
LHY5201314: "JAVA(JNI,Jnative,JNA)分别调用delphi的动态链接库(dll)的技术交流", 《ITEYE软件开发交流社区》 * |
沈东良: "使用JNA快速调用原生函数", 《程序员》 * |
黄河: "移动环境下的敏捷供应链集成技术研究与实现", 《中国优秀硕士学位论文全文数据库 经济与管理科学辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750470A (zh) * | 2013-12-27 | 2015-07-01 | 广州华多网络科技有限公司 | 客户端与应用的通讯方法及装置 |
CN111459489A (zh) * | 2020-02-27 | 2020-07-28 | 湖南大学 | 一种动态库自动服务化封装方法、系统及应用 |
CN111459489B (zh) * | 2020-02-27 | 2023-09-26 | 湖南大学 | 一种动态库自动服务化封装方法、系统及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100461096C (zh) | 动态注册表分区系统和方法 | |
US8332606B2 (en) | System and method for distributed persistent computing platform | |
CN102932408B (zh) | 一种服务器集群的管理方法和平台 | |
US9128893B2 (en) | Remote direct memory access socket aggregation | |
US20060259606A1 (en) | Method and system for executing a container managed application on a processing device | |
CN102810069A (zh) | 一种java对象的请求和响应方法、装置、系统和终端 | |
JP6992012B2 (ja) | データ処理方法及びデバイス | |
KR101856486B1 (ko) | 컴퓨팅 디바이스에서 수행되는 오픈 시스템과 메인프레임 시스템 사이의 양방향 호출 방법 | |
CN102316043B (zh) | 端口虚拟化方法、交换机及通信系统 | |
CN102137123A (zh) | 实现移动终端上不同应用程序的进程之间通信的装置和方法 | |
CN102629240A (zh) | 一种串口通信方法与装置 | |
US8627316B2 (en) | Mobile communications device application processing system | |
CN102207884A (zh) | 一种文件编译方法及装置 | |
CN104144202B (zh) | Hadoop分布式文件系统的访问方法、系统和装置 | |
CN104219078A (zh) | 一种多运行时环境数据的处理方法和装置 | |
CN103176775A (zh) | 一种实现网页应用程序本地化的方法和装置 | |
CN106686021B (zh) | 一种服务调用方法和网关 | |
CN105162673A (zh) | 数据传输接口及方法 | |
CN102779071A (zh) | 软件接口调用方法、装置和系统 | |
EP3528116A1 (en) | Operating method for storage device, and physical server | |
CN107450928A (zh) | 一种基于缓存技术的混合开发方法 | |
Fedrecheski et al. | Elixir programming language evaluation for IoT | |
CN102799444A (zh) | 跨平台打包程序的方法及装置 | |
CN102780731A (zh) | 客户端通信方法和装置 | |
CN104571930A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121114 |
|
RJ01 | Rejection of invention patent application after publication |