一种支持多种套接字连接模式的通信方法及服务器的制作方法

文档序号:6423007阅读:208来源:国知局
专利名称:一种支持多种套接字连接模式的通信方法及服务器的制作方法
技术领域
本发明涉及通信技术领域,特别的涉及一种支持多种套接字连接模式的通信方法及服务器。
背景技术
在RFID(Radio Frequency Identification,射频识别)应用系统中,运行上层应用程序的服务器和阅读器之间需要进行通讯,其通讯的消息格式有类似于LLRP (Low LevelReader Protocol,底层读写器协议)等通用的技术标准,但是上层应用程序和阅读器程序的通讯模式(即建立连接、维护连接和数据交互的方式)并没有统一的技术标准。在实际应用时,可能是阅读器程序作为套接字socket服务端,由上层应用程序作为socket客户端发起连接;也可能是上层应用程序作为socket服务端,由阅读器程序作为socket客户端发起连接。不同的厂家有不同的实现方式,在实际应用中可能会出现上层应用程序与阅读器 程序之间通讯方式不匹配的问题。另外,由于通讯方式不匹配,在集成项目的初期,软件开发工程师会根据不同厂家的设备开发对应方式的通讯模块,然而在开局测试期以及正式交付后,上层应用程序与阅读器程序通讯方式都可能会改变,此时前期编写的程序将无法于变化后的阅读器程序通讯,需要重新编写对应通讯方式的程序。可见现有技术中只有针对阅读器程序为单一套接字连接模式的通讯方式,显然功能上有所缺陷。

发明内容
本发明的目的是针对现有技术中只有针对阅读器程序为单一套接字连接模式的通讯方式,显然功能上有所缺陷的问题,提供一种支持多种套接字连接模式的通信方法及运行上层应用程序的服务器,该方法包括运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态,套接字连接包括,作为套接字服务器端的阅读器程序与作为套接字客户端的上层应用程序之间的第一类套接字连接,和作为套接字客户端的阅读器程序与作为套接字服务器端的上层应用程序之间的第二类套接字连接;运行上层应用程序的服务器根据链接状态为正常,确定上层应用程序与阅读器程序之间存在套接字连接进行数据交互,根据链接状态为断链,确定上层应用程序与阅读器程序之间不存在套接字连接停止数据交互。进一步,运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态之前还包括运行上层应用程序的服务器为待建立的链接分配链接标识,并建立上层应用程序与阅读器程序之间的套接字连接所使用的链接,链接标识包括阅读器的设备标识;运行上层应用程序的服务器获取所建链接的状态信息;运行上层应用程序的服务器将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中;运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态具体为运行上层应用程序的服务器依次从链接池中获取各链接的状态信息,检测链接状态。进一步,运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的套接字连接所使用的链接具体为查找链接池中的链接信息,当没有找到与为待建链接分配的链接标识相同的链接标识时,进行链接建立。进一步,还包括
运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的类套接字连接后,等待阅读器上报的LLRP消息,若预订时间内没有收到LLRP消息,则关闭建立的链接,并从链接池中删除该链接的链接信息。进一步,运行上层应用程序的服务器将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中具体为运行上层应用程序的服务器将第一类套接字连接所使用链接的链接信息,和第二类套接字连接所使用链接的链接信息分别存储在不同的链接池中。进一步,还包括运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的第一类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,当与分配的链接标识中的阅读器设备标识不相同时,则关闭建立的链接,并从链接池中删除该链接的链接信息。进一步,还包括运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的第二类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,更新链接池中该链接的链接信息中的设备标识。进一步,链接标识还包括链接序号。进一步,运行上层应用程序的服务器采用定时任务的方式进行链接状态检测。进一步,还包括运行上层应用程序的服务器获取链接状态为正常的链接状态信息后,若检测获取链接状态信息的时间和上次收到心跳消息的时间的间隔超时,则断开使用该链接建立的套接字连接,并将链接的状态信息修改为断链。本发明实施例还提供一种支持多种套接字连接模式的运行上层应用程序的服务器,包括检测模块,用于检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态,套接字连接包括,作为套接字服务器端的阅读器程序与作为套接字客户端的上层应用程序之间的第一类套接字连接,和作为套接字客户端的阅读器程序与作为套接字服务器端的上层应用程序之间的第二类套接字连接;确定模块,用于运行上层应用程序的服务器根据链接状态为正常,确定上层应用程序与阅读器程序之间存在套接字连接进行数据交互,根据链接状态为断链,确定上层应用程序与阅读器程序之间不存在套接字连接停止数据交互。进一步,还包括建立模块,用于为待建立的链接分配链接标识,并建立上层应用程序与阅读器程序之间的套接字连接所使用的链接,链接标识包括阅读器的设备标识,获取所建链接的状态信息,将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中;检测模块,具体用于依次从链接池中获取各链接的状态信息,检测链接状态。进一步,建立模块,具体用于查找链接池中的链接信息,当没有找到与为待建链接 分配的链接标识相同的链接标识时,进行链接建立。进一步,建立模块,具体用于建立上层应用程序与阅读器程序之间的套接字连接后,等待阅读器上报的LLRP消息,若预订时间内没有收到LLRP消息,则关闭建立的链接,并从链接池中删除该链接的链接信息。进一步,建立模块,具体用于将第一类套接字连接所使用链接的链接信息,和第二类套接字连接所使用链接的链接信息分别存储在不同的链接池中。进一步,建立模块,具体用于建立上层应用程序与阅读器程序之间的第一类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,当与分配的链接标识中的阅读器设备标识不相同时,则关闭建立的链接,并从链接池中删除该链接的链接信息。进一步,建立模块,具体用于建立上层应用程序与阅读器程序之间的第二类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,更新链接池中该链接的链接信息中的设备标识。进一步,检测模块,具体用于采用定时任务的方式进行链接状态检测。进一步,检测模块,具体用于获取链接状态为正常的链接状态信息后,若检测获取链接状态信息的时间和上次收到心跳消息的时间的间隔超时,则断开使用该链接建立的套接字连接,并将链接的状态信息修改为断链。由于通过对不同通讯类型的套接字连接,使用的链接状态进行检测,得到套接字连接的情况进而完成通讯,克服了只支持单一通讯方式的缺陷。


图I表示本发明提供的第一实施例系统结构图;图2表示本发明提供的第一实施例方法流程图;图3表示本发明提供的第一实施例客户端模式的Socket连接使用的链接注册方法流程图;图4表示本发明提供的第一实施例服务器端模式的Socket连接使用的链接注册方法流程图;图5表示本发明提供的第一实施例断链检测方法流程图;图6表示本发明提供的第一实施例断链检测方法子流程图;图7表示本发明提供的第二实施例服务器结构图。
具体实施例方式下面结合说明书附图对本发明优选实施例进行说明,本发明第一实施例是一种支持多种套接字连接模式的通信方法,以图I的RFID应用系统为例,本是实施例的RFID应用系统包括一个应用于运行上层应用程序的服务器I和若干个阅读器2,服务器和各阅读器通过网络3连接,本实施例的方法应用于RFID应用系统,下面以上层应用程序和阅读器0010(设备标识Device ID)的程序a为例进行说明,如图2所示,包括步骤11、服务器检测上层应用程序与阅读器0010的程序a之间的套接字连接,所使用链接0010&80(80为LinkID即链接序号)的链接状态。
步骤12、服务器判断链接状态是否正常,若链接状态为正常,执行步骤13,否则链接状态为断链,执行步骤14。步骤13、服务器确定上层应用程序与阅读器0010的程序a之间存在套接字连接进行数据交互。步骤14、服务器确定上层应用程序与阅读器0010的程序a之间不存在套接字连接停止数据交互。其中,套接字连接包括第一类套接字连接和第二类套接字连接,第一类套接字连接为,作为套接字服务器端的阅读器程序与作为套接字客户端的上层应用程序之间的套接字连接。第二类套接字连接为,作为套接字客户端的阅读器程序与作为套接字服务器端的上层应用程序之间的套接字连接。例如,上层应用程序与阅读器0010的程序a采用第一类套接字连接,上层应用程序与阅读器0001的程序b采用第二类套接字连接,即本实施例的RFID应用系统包括多种套接字连接模式。当然在执行上述的步骤之前,服务器还要为待建立的链接分配链接标识0010&80,并建立上层应用程序与阅读器0010的程序a之间的套接字连接所使用的链接,本实施例中的链接标识0010&80包括阅读器的Device ID 0010和LinkID 80。在链接0010&80建立后,服务器获取所建链接0010&80的状态信息,链接的链接标识0010&80及该链接的状态信息(如正常或断链)绑定,作为链接信息,如链接信息表示为0010&80-1即链接标识0010&80的链接的链接状态为正常,或链接信息表示为0010&80-2即链接标识0010&80的链接的链接状态为断链,将链接信息存储在链接池中。这样服务器通过从链接池中获取链接0010&80的状态信息,检测链接0010&80的链接状态。对于阅读器0010的其它程序或其它阅读器的程序类似,服务器依次从链接池中获取各链接的状态信息,检测链接状态。通过链接池的方式实现链接检测,实施时简单方便。服务器建立链接0010&80时,先要查找链接池中的链接信息,当没有找到与为待建链接分配的链接标识0010&80相同的链接标识时,进行链接建立,因为这样可以保证不
会重复建链。服务器可以将第一类套接字连接所使用链接的链接信息存储在服务端模式链接池,将第二类套接字连接所使用链接的链接信息存储在端模式链接池,此处所说的服务端模式和客户端模式是指上层应用程序的套接字连接采用的通信模式,将第一类套接字连接和第二类套接字连接分别存储在不同的链接池中,是为了后续操作更方便的调用,如需要调用第二类套接字连接只需要去服务端模式链接池进行查找。服务器建立上层应用程序与阅读器0010的程序a之间的第一类套接字连接后,会等待阅读器OOlO的程序a上报的LLRP消息,从LLRP消息提取该阅读器0010的程序a的设备标识(可能是0010也可能是1100),当与分配的链接标识0010&80中的阅读器设备标识0010不相同时,则关闭建立的链接,并从链接池中删除该链接的链接信息。例如利用某个IP建立链接时,该IP之前所对应的阅读器被更换,这样避免服务器预分配可能出现的设备标识不准确造成链路异常的问题。服务器建立上层应用程序与阅读器0010的程序a之间的第一类套接字连接后,要等待阅读器上报的LLRP消息,若预订时间tl内没有收到LLRP消息,则关闭建立的链接,并从链接池中删除该链接的链接信息。这样通过超时判断确定链接异常,将其关闭。对于阅读器0001的程序b,服务器建立上层应用程序与阅读器0001的程序b之间的第二类套接字连接后,等待阅读器0001的程序b上报的LLRP消息,从LLRP消息提取阅读器0001的Device ID 0001,更新链接池中该链接的链接信息中的Device ID为0001,由于上层应用程序与阅读器0001的程序b采用第二类套接字连接,阅读器0001可能会出现断链重连的情况,这样通过从LLRP消息提取的Device ID 0001能准确的确定链接的链接信息中的DevicelD。 同样,服务器建立上层应用程序与阅读器0001的程序b之间的第二类套接字连接后,要等待阅读器上报的LLRP消息,若预订时间tl内没有收到LLRP消息,则关闭建立的链接,并从链接池中删除该链接的链接信息。这样通过超时判断确定链接异常,将其关闭。本实施例中服务器采用定时任务的方式进行链接状态检测,这样既能节省资源又能保证检测的实时性。服务器获取链接0010&80链接状态为正常后,若检测获取该链接状态信息的时间和上次收到心跳消息的时间的间隔为T1,T1大约预定的基准间隔TO超时,则断开使用链接0010&80建立的套接字连接(上层应用程序与阅读器0010的程序a之间的套接字连接),并将链接0010&80的状态信息修改为断链,这样是为了保证链接的状态准确实时。本实施例服务器以,上层应用程序在通信模块(运行在服务器中与阅读器实现通信的应用程序)中注册链路并由通信模块完成链路的建立的方式,实现建链。通信模块还要完成之后的链路维护及管理工作,下面对注册链接的流程进行说明,客户端模式的Socket连接使用的链接简称客户端模式链接,服务器端模式的Socket连接使用的链接简称服务器端模式链接,注册流程,如图3所示,包括步骤SlOl上层应用程序注册链接,流程开始。步骤S102判断DeviceID相同的链接是否已经存在,是则执行步骤103,否则执行步骤104。步骤S103返回成功并执行步骤105。步骤S104创建客户端模式的链接。步骤S105流程结束。服务器端模式的流程,如图4所示,包括步骤Slll启动非阻塞的Socket服务器,监听指定端口,流程开始。步骤S112创建服务器端模式的链接。步骤S113阅读器上报的DeviceID与原有DeviceID相同则将原有链路关闭并移出,保存新的链接。
步骤SI 14流程结束。附图5描述断链检测操作主流程,包括以下步骤步骤S201定时器任务启动(断链检测采用定时任务的方式进行调度,每个一定时间,执行一次本流程),流程开始,;步骤S202依次从服务端模式的链接池中获取链接;步骤S203判断是否获取成功,成功的标准是可以获取掉一个尚未检测的链接,返回结果不是null ;如果获取成功,转到步骤S204 ;
如果获取失败,转到步骤S205步骤S204执行断链检测子流程,执行完成后转到步骤S202步骤S205依次从客户端模式的链接池中获取链接;步骤S206判断是否获取成功,成功的标准是可以获取掉一个尚未检测的链接,返回结果不是null ;如果获取成功,转到步骤S207 ;如果获取失败,转到步骤S208 ;步骤S207执行断链检测子流程,执行完成后转到步骤S205 ;步骤S208流程结束。附图6描述断链检测子流程1,包括以下步骤步骤S301断链检测主流程调用子流程1,流程开始;步骤S302判断链接状态是否为正常,如果状态正常,转到步骤S303 ;如果状态不正常,转到步骤S308 ;步骤S303获取上次接收到心跳消息的时间;步骤S304判断上次心跳时间到当前时间的时间间隔是否超时,如果超时,转入步骤S305 ;如果不超时,转入步骤S308 ;步骤S305断开超时链接内部持有的Socket连接,设置链接状态为断链;步骤S306判断是否是服务端模式的链接,如果是,转入步骤S307 ;如果否,转入步骤 S308 ;步骤S308子流程I结束。本发明第二实施例提供一种支持多种套接字连接模式的运行上层应用程序的服务器,如图7所示,包括检测模块401,用于检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态,套接字连接包括,作为套接字服务器端的阅读器程序与作为套接字客户端的上层应用程序之间的第一类套接字连接,和作为套接字客户端的阅读器程序与作为套接字服务器端的上层应用程序之间的第二类套接字连接;确定模块402,用于运行上层应用程序的服务器根据链接状态为正常,确定上层应用程序与阅读器程序之间存在套接字连接进行数据交互,根据链接状态为断链,确定上层应用程序与阅读器程序之间不存在套接字连接停止数据交互。进一步,还包括建立模块403,用于为待建立的链接分配链接标识,并建立上层应用程序与阅读器程序之间的套接字连接所使用的链接,链接标识包括阅读器的设备标识,获取所建链接的状态信息,将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中;检测模块401,具体用于依次从链接池中获取各链接的状态信息,检测链接状态。进一步,建立模块403,具体用于查找链接池中的链接信息,当没有找到与为待建链接分配的链接标识相同的链接标识时,进行链接建立。进一步,建立模块403,具体用于建立上层应用程序与阅读器程序之间的第一类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,当与分配的链接标识中的阅读器设备标识不相同时,则关闭建立的链接,并从链接池中删除该链接的链接信息。进一步,建立模块403,具体用于将第一类套接字连接所使用链接的链接信息,和第二类套接字连接所使用链接的链接信息分别存储在不同的链接池中。 进一步,建立模块403,具体用于建立上层应用程序与阅读器程序之间的第一类套接字连接后,等待阅读器上报的LLRP消息,若预订时间内没有收到LLRP消息,则关闭建立的链接,并从链接池中删除该链接的链接信息。进一步,建立模块403,具体用于建立上层应用程序与阅读器程序之间的第二类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,更新链接池中该链接的链接信息中的设备标识。进一步,检测模块401,具体用于采用定时任务的方式进行链接状态检测。进一步,检测模块401,具体用于获取链接状态为正常的链接状态信息后,若检测获取链接状态信息的时间和上次收到心跳消息的时间的间隔超时,则断开使用该链接建立的套接字连接,并将链接的状态信息修改为断链。最后应说明的是以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
权利要求
1.一种支持多种套接字连接模式的通信方法,其特征在于,包括 运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态,套接字连接包括,作为套接字服务器端的阅读器程序与作为套接字客户端的上层应用程序之间的第一类套接字连接,和作为套接字客户端的阅读器程序与作为套接字服务器端的上层应用程序之间的第二类套接字连接; 运行上层应用程序的服务器根据链接状态为正常,确定上层应用程序与阅读器程序之间存在套接字连接进行数据交互,根据链接状态为断链,确定上层应用程序与阅读器程序之间不存在套接字连接停止数据交互。
2.如权利要求I所述的方法,其特征在于,运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态之前还包括 运行上层应用程序的服务器为待建立的链接分配链接标识,并建立上层应用程序与阅读器程序之间的套接字连接所使用的链接,链接标识包括阅读器的设备标识; 运行上层应用程序的服务器获取所建链接的状态信息; 运行上层应用程序的服务器将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中; 运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态具体为 运行上层应用程序的服务器依次从链接池中获取各链接的状态信息,检测链接状态。
3.如权利要求2所述的方法,其特征在于,运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的套接字连接所使用的链接具体为 查找链接池中的链接信息,当没有找到与为待建链接分配的链接标识相同的链接标识时,进行链接建立。
4.如权利要求2所述的方法,其特征在于,还包括 运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的类套接字连接后,等待阅读器上报的LLRP消息,若预订时间内没有收到LLRP消息,则关闭建立的链接,并从链接池中删除该链接的链接信息。
5.如权利要求2所述的方法,其特征在于,运行上层应用程序的服务器将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中具体为 运行上层应用程序的服务器将第一类套接字连接所使用链接的链接信息,和第二类套接字连接所使用链接的链接信息分别存储在不同的链接池中。
6.如权利要求5所述的方法,其特征在于,还包括 运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的第一类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,当与分配的链接标识中的阅读器设备标识不相同时,则关闭建立的链接,并从链接池中删除该链接的链接信息。
7.如权利要求5所述的方法,其特征在于,还包括 运行上层应用程序的服务器建立上层应用程序与阅读器程序之间的第二类套接字连接后,等待阅读器上报的LLRP消息,从LLRP消息提取该阅读器的设备标识,更新链接池中该链接的链接信息中的设备标识。
8.如权利要求2所述的方法,其特征在于,链接标识还包括链接序号。
9.如权利要求I所述的方法,其特征在于,运行上层应用程序的服务器采用定时任务的方式进行链接状态检测。
10.如权利要求9所述的方法,其特征在于,还包括 运行上层应用程序的服务器获取链接状态为正常的链接状态信息后,若检测获取链接状态信息的时间和上次收到心跳消息的时间的间隔超时,则断开使用该链接建立的套接字连接,并将链接的状态信息修改为断链。
11.一种支持多种套接字连接模式的运行上层应用程序的服务器,其特征在于,包括 检测模块,用于检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态,套接字连接包括,作为套接字服务器端的阅读器程序与作为套接字客户端的上层应用程序之间的第一类套接字连接,和作为套接字客户端的阅读器程序与作为套接字服务器端的上层应用程序之间的第二类套接字连接; 确定模块,用于运行上层应用程序的服务器根据链接状态为正常,确定上层应用程序与阅读器程序之间存在套接字连接进行数据交互,根据链接状态为断链,确定上层应用程序与阅读器程序之间不存在套接字连接停止数据交互。
12.如权利要求11所述的运行上层应用程序的服务器,其特征在于,还包括 建立模块,用于为待建立的链接分配链接标识,并建立上层应用程序与阅读器程序之间的套接字连接所使用的链接,链接标识包括阅读器的设备标识,获取所建链接的状态信息,将所建链接的链接标识及该链接的状态信息绑定作为链接信息存储在链接池中; 检测模块,具体用于依次从链接池中获取各链接的状态信息,检测链接状态。
13.如权利要求12所述的运行上层应用程序的服务器,其特征在于,建立模块,具体用于将第一类套接字连接所使用链接的链接信息,和第二类套接字连接所使用链接的链接信息分别存储在不同的链接池中。
全文摘要
本发明提供一种支持多种套接字连接模式的通信方法及服务器以解决现有技术中存在的只有针对阅读器程序为单一套接字连接模式的通讯方式,功能上有所缺陷的问题,该方法包括运行上层应用程序的服务器检测上层应用程序与阅读器程序之间的套接字连接,所使用链接的链接状态,套接字连接包括不同通讯方式,根据链接状态为正常,确定上层应用程序与阅读器程序之间存在套接字连接进行数据交互,根据链接状态为断链,确定上层应用程序与阅读器程序之间不存在套接字连接停止数据交互,由于通过对不同通讯类型的套接字连接,使用的链接状态进行检测,得到套接字连接的情况进而完成通讯,克服了只支持单一通讯方式的缺陷。
文档编号G06K17/00GK102761518SQ20111010393
公开日2012年10月31日 申请日期2011年4月25日 优先权日2011年4月25日
发明者刘辛燕, 贺晓猛 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1