将面向物联网的单机版程序转换为网络版程序的方法

文档序号:6397905阅读:565来源:国知局
专利名称:将面向物联网的单机版程序转换为网络版程序的方法
技术领域
本发明属于计算机软件转换处理技术领域,具体涉及一种将面向物联网的单机版程序转换为网络版程序的方法。
背景技术
物联网是新一代信息技术的重要组成部分,随着Internet的扩展深入至社会的各个角落,未来使用的各种电气设备也会逐步联入Internet,演化为物联网的一个个节点,这些电气设备在运行的过程中必然会与Internet中的电脑软件进行交互,而交互的关键就是硬件与软件之间数据的传输、处理、存储。目前,对于给物联网中的电气设备进行单机配套的软件而言,很多还是单机版的应用程序,对于单机版程序而言,用户必须在装有该程序的计算机前进行操作,操作地点有局限性,而且用户需要首先安装特定对象的电气设备的配套软件,这样显得臃肿繁琐,这样就十分不利于用户随时随地进行查看和管理程序所处理和存储的数据,也就无法及时了解这些物联网设备节点的动态,这不仅给用户带来很大的不便,也没有发挥出物联网方便、快捷、智能化的优势。

发明内容
本发明的目的是提供一种将面向物联网的单机版程序转换为网络版程序的方法,解决了现有技术中的电气设备使用单机版的应用程序,无法与Internet计算机联网查询数据的问题。本发明所采用的技术方案是,一种将面向物联网的单机版程序转换为网络版程序的方法,按照以下具体步骤实施:步骤1、在DLL中实施COM Hook1.1)当特定对象的电气设备的单机版软件开启后,与之配套的客户端程序会将一个实施COM Hook的DLL映射到该软件的进程空间中,并创建一个工作线程;1.2)在当前的线程初始化COM库;1.3)用相应类型的函数指针记录要替换的COM接口虚表中的原函数地址;1.4)用截取数据的函数替换单机版程序数据库操作所调用的COM中的函数,在内存可写入的状态下,以调用过程中的COM原有的函数地址的起始内存地址为基地址,写入新的函数地址,完成函数替换;1.5)因为COM中原本应该被执行的函数被截取数据的函数所替换,当单机版程序执行数据库操作时,调用这些COM中的函数实质上是调用截取数据的函数;1.6)在单机版程序数据库操作接口被Hook后,当单机版程序执行数据库的插入的操作时,替换函数会将各种数据库操作数据传至客户端进程;1.7)在程序退出时解除挂钩,在解除挂钩时,用在步骤1.2)中已经保存的接口虚表中原来的函数地址替换截取数据的函数,以达到COM函数复原的目的;
步骤2、客户端将数据传输至服务端2.1) DLL创建一个线程向客户端进程发送数据,DLL的线程作为发送端,而客户端进程相当于接收端,在单机版软件开启时,客户端进程和DLL创建的线程建立连接;2.2)客户端进程在收到数据后,对数据进行拆分、处理,最后组成一个包含数据库、数据表、数据项的数据包,并且根据数据的不同种类在数据包中加入相应的数据类型和数据操作类型,通过TCP/IP通信传给服务端进程;步骤3、服务端将数据存储至服务端数据库;步骤4、通过浏览器访问数据通过读取服务端数据库,网页服务器程序会以实时响应用户请求的方式将用户请求的数据通过浏览器呈现给用户,用户就能够在浏览器上随时查看特定对象的电气设备上传至数据库的信息。本发明的有益效果是:基于COM Hook的原理,将进行COM Hook的DLL映射至单机版程序或者客户端程序的进程空间中,与数据库进行挂钩,截取数据库数据,并将其传至客户端程序进程,客户端程序进程通过TCP/IP通信将数据传至服务端程序进程,服务端程序进程将这些数据存储进入服务端数据库。这样一来,通过与服务端数据库互联的网页服务器程序,将单机版程序转换为网络版程序,用户就能够随时随地在浏览器上查看和管理单机版程序与电气设备交互的数据,充分发挥物联网方便、快捷、智能化的优势。


图1为本发明方法的技术原理结构总图;图2为本发明方法的COM Hook具体的实施例示意图。
具体实施例方式以下文本中的客户是指Server-Client这种网络模型中的客户端程序(Client)。用户是指软件的使用者(User)。客户一词都是用“客户端”来使用的,没有单独出现“客户”一词。而“用户”一词是单独出现的。服务器一方面是指装有服务端程序数据库的计算机,二方面是指网页服务器程序。一个是硬件,一个是软件。对于数据库而言:一方面是指单机版程序自身的数据库;二方面是指发明方法中配套的服务端程序的数据库。参照图1、图2,本发明的将面向物联网的单机版程序转换为网络版程序的方法,按照以下步骤具体实施:步骤1、在DLL中实施COM Hook1.1)当特定对象的电气设备的单机版软件开启后,与之配套的客户端程序会将一个实施COM Hook的DLL映射到该软件的进程空间中,并创建一个工作线程;1.2)在当前的线程初始化COM库;1.3)用相应类型的函数指针记录要替换的COM接口虚表中的原函数地址,以便在解除挂钩时能将原来的函数转换回来;1.4)用截取数据的函数替换单机版程序数据库操作所调用的COM中的函数,如图2所示,在内存可写入的状态下,以调用过程中的COM原有的函数地址的起始内存地址为基地址,写入新的函数地址,这样就完成了函数替换;1.5)因为COM中原本应该被执行的函数被截取数据的函数所替换,当单机版程序执行数据库操作时,调用这些COM中的函数实质上是调用截取数据的函数;1.6)在单机版程序数据库操作接口被Hook后,当单机版程序执行数据库的插入等操作时,替换函数会将各种数据库操作数据传至客户端进程,如图1所示;1.7)最后在程序退出时解除挂钩,在解除挂钩时,用在步骤1.2)中已经保存的接口虚表中原来的函数地址替换截取数据的函数,以达到COM函数复原的目的;步骤2、客户端将数据传输至服务端2.1)DLL创建一个线程向客户端进程发送数据,如图1所示,DLL的线程作为发送端,而客户端进程相当于接收端,在单机版软件开启时,客户端进程和DLL创建的线程建立连接;2.2)客户端进程在收到数据后,对数据进行拆分、处理,最后组成一个包含数据库、数据表、数据项的数据包,并且根据数据的不同种类在数据包中加入相应的数据类型和数据操作类型,如图1所示,通过TCP/IP通信传给服务端进程;步骤3、服务端将数据存储至服务端数据库3.1)在客户端进程与服务端进程之间使用合理的通信模型,服务端进程设置了若干个工作线程,这些工作线程轮流处理客户端进程发送来的数据包;3.2)在对数据包拆包、处理后,根据数据包中的数据种类和数据操作类型,不同的数据会被重新组包,并且加入相应的操作命令,服务端进程把该数据包作为消息的附加属性向服务端的窗体发送消息;3.3)在服务端的消息响应函数中,响应函数根据传来的数据包的操作命令种类分别进行处理,服务端进程会根据得到的数据库、数据表、数据项数据组成一个SQL语句字符串,调用数据库API执行这个SQL语句,将数据插入至服务端数据库;步骤4、通过浏览器访问数据如图1所示,通过读取服务端数据库,网页服务器程序会以实时响应用户请求的方式将用户请求的数据通过浏览器呈现给用户,用户就能够在浏览器上随时查看特定对象的电气设备上传至数据库的信息。本发明方法的工作原理是,在单机版程序所在的计算机上装载一个客户端程序作为数据中转站;在服务器上装载一个负责存储数据的服务端程序;在单机版程序所在的主机中,将进行COM Hook的DLL映射至单机版程序或者客户端程序的进程空间中,与单机版程序数据库进行挂钩,截取单机版程序数据库数据,并将数据传至客户端程序进程,客户端程序进程通过TCP/IP通信将数据传至服务端程序进程,服务端程序进程将这些数据存储进入服务端数据库;在含有该数据库的服务器上部署与数据库相连的网页服务器程序,用户即可利用浏览器查看物联网节点的数据。实施例特定对象的电气设备是一台身份证读卡器。用户在读卡器上放置《中华人民共和国居民身份证》进行识读,该读卡器将身份证中的信息传至读卡器配套软件的数据库中。通过本发明方法转换处理后即可截获该身份证信息,并层层传递至服务端数据库中,用户就可以通过浏览器即时查看该信息,该信息可按照如下表I的表格形式显示:表I通过浏览器即时查看到的该信息
权利要求
1.一种将面向物联网的单机版程序转换为网络版程序的方法,其特征在于,按照以下具体步骤实施: 步骤1、在DLL中实施COM Hook .1.0当特定对象的电气设备的单机版软件开启后,与之配套的客户端程序会将一个实施COM Hook的DLL映射到该软件的进程空间中,并创建一个工作线程; .1.2)在当前的线程初始化COM库; .1.3)用相应类型的函数指针记录要替换的COM接口虚表中的原函数地址; .1.4)用截取数据的函数替换单机版程序数据库操作所调用的COM中的函数,在内存可写入的状态下,以调用过程中的COM原有的函数地址的起始内存地址为基地址,写入新的函数地址,完成函数替换; .1.5)因为COM中原本应该被执行的函数被截取数据的函数所替换,当单机版程序执行数据库操作时,调用这些COM中的函数实质上是调用截取数据的函数; .1.6)在单机版程序数据库操作接口被Hook后,当单机版程序执行数据库的插入的操作时,替换函数会将各种数据库操作数据传至客户端进程; .1.7)在程序退出时解除挂钩,在解除挂钩时,用在步骤1.2)中已经保存的接口虚表中原来的函数地址替换截取数据的函数,以达到COM函数复原的目的; 步骤2、客户端将数据传输至服务端
2.DLL创建一个线程向客户端进程发送数据,DLL的线程作为发送端,而客户端进程相当于接收端,在单机版软件开启时,客户端进程和DLL创建的线程建立连接; .2.2)客户端进程在收到数据后,对数据进行拆分、处理,最后组成一个包含数据库、数据表、数据项的数据包,并且根据数据的不同种类在数据包中加入相应的数据类型和数据操作类型,通过TCP/IP通信传给服务端进程; 步骤3、服务端将数据存储至服务端数据库; 步骤4、通过浏览器访问数据 通过读取服务端数据库,网页服务器程序会以实时响应用户请求的方式将用户请求的数据通过浏览器呈现给用户,用户就能够在浏览器上随时查看特定对象的电气设备上传至数据库的信息。据权利要求1所述的将面向物联网的单机版程序转换为网络版程序的方法,其特征在于:所述的步骤3的具体实施过程是: .3.1)在客户端进程与服务端进程之间使用合理的通信模型,服务端进程设置了若干个工作线程,这些工作线程轮流处理客户端进程发送来的数据包; .3.2)在对数据包拆包、处理后,根据数据包中的数据种类和数据操作类型,不同的数据会被重新组包,并且加入相应的操作命令,服务端进程把该数据包作为消息的附加属性向服务端的窗体发送消息; .3.3)在服务端的消息响应函数中,响应函数根据传来的数据包的操作命令种类分别进行处理,服务端进程会根据得到的数据库、数据表、数据项数据组成一个SQL语句字符串,调用数据库API执行这个SQL语句,将数据插入至服务端数据库。
全文摘要
本发明公开了一种将面向物联网的单机版程序转换为网络版程序的方法,步骤包括步骤1、在DLL中实施COM Hook;步骤2、客户端将数据传输至服务端;步骤3、服务端将数据存储至服务端数据库;步骤4、通过浏览器访问数据,通过读取服务端数据库,网页服务器程序会以实时响应用户请求的方式将用户请求的数据通过浏览器呈现给用户,用户就能够在浏览器上随时查看特定对象的电气设备上传至数据库的信息。本发明的方法,对于面向物联网的网络版程序,用户在任意一台可联网的计算机上通过浏览器即可访问数据信息,方便快捷,实时查询。
文档编号G06F9/44GK103092619SQ20131001526
公开日2013年5月8日 申请日期2013年1月16日 优先权日2013年1月16日
发明者孙钦东, 王倩, 郭亦辰, 张景鹏 申请人:西安理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1