数据包转发方法、装置及移动终端
技术领域
本申请涉及通信技术领域,更具体地,涉及一种数据包转发方法、装置及移动终端。
背景技术
随着支持无线通信的设备越来越多,更多的设备会定期通过无线发送一些广播数据。当移动终端扫描到有其他设备发送的广播数据的数据包后,就会将扫描到的数据包发送给对应的应用程序进行处理,但是,实际上很多广播数据的数据包的内容也不是实时变化的,如果将每次接收到的广播数据的数据包都进行转发会增加移动终端不必要的开销。
发明内容
鉴于上述问题,本申请提出了一种数据包转发方法、装置及移动终端,以实现改善上述问题。
第一方面,本申请提供了一种数据包转发方法,应用于移动终端的系统服务,所述方法包括:当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,所述系统服务将所述广播数据的数据包作为当次接收的数据包,获取与所述当次接收的数据包对应的第一时间戳;获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳;计算所述第一时间戳和所述第二时间戳之间的间隔;若所述间隔不小于指定阈值,将所述当次接收的数据包进行缓存并转发给目标程序。
第二方面,本申请提供了一种数据包转发装置,运行于移动终端的系统服务,所述装置包括:时间获取单元,用于当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,将所述广播数据的数据包作为当次接收的数据包,获取与所述当次接收的数据包对应的第一时间戳;所述时间获取单元,还用于获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳;转发条件计算单元,用于计算所述第一时间戳和所述第二时间戳之间的间隔;数据包转发单元,用于若所述间隔不小于指定阈值,将所述当次接收的数据包进行缓存并转发给目标程序。
第三方面,本申请提供了一种移动终端,包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。
第四方面,本申请提供的一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。
本申请提供的一种数据包转发方法、装置及移动终端,在当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,会将所述系统服务将所述广播数据的数据包作为当次接收的数据包,进而再获取与所述当次接收的数据包对应的第一时间戳,然后再获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳,进而计算所述第一时间戳和所述第二时间戳之间的间隔,在当所述间隔不小于指定阈值的情况下,将所述当次接收的数据包进行缓存并转发给目标程序。从而通过前述方式可以使得移动终端不会将每次接收到的广播数据的数据包都转发给目标程序,而是基于设定的时间间隔来确定是否将当次接收到的广播数据的数据包转发给目标程序,进而降低了无效的调起目标程序的次数,降低了移动终端的资源的开销。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种本申请实施例提供的数据包转发流程示意图;
图2示出了本申请实施例提供的一种支付方法的应用环境示意图;
图3示出了本申请实施例提出的一种数据包转发方法的流程图;
图4示出了本申请实施例提出的移动终端与多个支付机具的无线信号覆盖范围的位置示意图;
图5示出了本申请另一实施例提出的一种数据包转发方法的流程图;
图6示出了本申请再一实施例提出的一种数据包转发方法的流程图;
图7示出了本申请实施例提出的一种数据包转发装置的结构框图;
图8示出了本申请另一实施例提出的一种数据包转发装置的结构框图;
图9示出了本申请再一实施例提出的一种数据包转发装置的结构框图;
图10示出了本申请提出的一种移动终端的结构框图;
图11是本申请实施例的用于保存或者携带实现根据本申请实施例的数据包转发方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着互联网技术的发展,不需要依赖于现金的电子支付越来越成为人们青睐的支付方式。通常,电子支付时,需要用户拿出用于支付的电子产品进行支付操作,如拿出手机并调出支付二维码进行扫描,拿出手机进入扫码界面扫描商店收款二维码,拿出银行卡给收银员通过刷卡机刷卡等。在这些电子支付过程中,用户需要拿出用于支付的电子产品并进行相应的操作,整个支付过程比较耗时。
为了提高支付速度,缩短支付时间,可以通过用户的生物特征信息进行支付,如通过用户的人脸、指纹、掌纹以及虹膜等可以对用户身份进行唯一标识的生物特征信息。用户在支付时,可以直接在商家提供的生物特征采集设备提供对应的生物特征信息,如通过人脸支付时,用户在人脸采集设备前提供脸部供人脸采集设备采集,不需要用户额外拿出手机等用于支付的设备,支付速度更快,操作更简单。
但是,通过生物特征信息进行支付时具有一定的安全隐患。一方面,虽然生物特征信息可以对用户身份进行唯一标识,但是也有极小几率识别出错,如将一个用户的生物特征信息识别为另一个用户的生物特征信息;另一方面,可能有不法分子通过仿真模仿其他用户的生物特征信息,假冒其他用户进行支付。
根据用户对移动终端的使用特点以及线下购物特点,发明人发现,若在确定用户进入到支付机具附近的情况下,接收到该用户通过该支付机具提供生物特征信息进行扣款,可以进一步确定为用户本人提供的身份特征信息,从而进一步保证支付的安全性。因此,发明人对通过用户的生物特征信息进行支付的流程进行了仔细研究。
发明人发现,通过生物特征信息进行支付的情况下,通常是生物特征信息对应有支付帐号。当获取到用户的生物特征信息,匹配该生物特征信息对应的支付帐号,从匹配到的支付帐号进行扣款。生物特征信息匹配的支付帐号可以是移动终端中绑定的支付帐号,如移动终端中某支付应用程序的帐号等。而用户在线下购物时,通常会携带绑定有支付帐号的移动终端。因此,在确定绑定支付帐号的移动终端位于到支付机具的附近的情况下,接收用户通过支付机具进行付款,可以进一步保证该付款的安全性。
然而在完成前述的支付过程之前,移动终端需要将从支付机具发送的广播数据中获取的设备标识和自身绑定的支付帐号发送给支付服务器。具体的,如图1所示,以移动终端通过蓝牙BLE模式进行广播数据的数据包扫描为例。移动终端中的负责数据包转发的第一程序在从BLE协议栈获取到广播数据的数据包后,会将接收到的数据包转发给第二程序。当在支付场景下,第二程序可以为第三方支付程序,作为第三方支付程序的第二程序需要将接收到的数据包中携带的支付机具的设备标识发送给支付服务器。而在第一程序将数据包转发给第二程序的过程中,第一程序会先调用第二程序,触发第二程序启动后,再进行转发。因此,发明人发现,如果负责转发数据包的程序将每次接收到的数据包都转发到目标程序(例如,前述的第二程序),那么会造成频繁的触发目标程序启动,增加移动终端的功耗。
因此,发明人提出了本申请实施例提供的数据包转发方法、装置及移动终端,本申请实施例提供的数据包转发方法,该方法可以使得移动终端不会将每次接收到的广播数据的数据包都转发给目标程序,而是基于设定的时间间隔来确定是否将当次接收到的广播数据的数据包转发给目标程序,进而降低了无效的调起目标程序的次数,降低了移动终端的功耗。
下面将对本申请实施例所涉及的应用环境进行介绍。
如图2所示,请参阅图2,在图2涉及的系统中包括移动终端100、支付机具200以及支付服务器300。其中,移动终端100可以为手机或者平板电脑等,在该移动终端中存储有用户预先绑定的支付帐号。该支付机具200用于采集用户的生物特征信息并传输给支付服务器300,而支付服务器300用于根据接收到的生物特征信息完成支付操作。
在系统运行过程中,支付机具200可以以设定的无线通信模式发送广播数据,其中,图2中支付机具200周围的虚线圈表征支付机具所发送的广播数据的覆盖范围。可选的,该无线通信模式包括蓝牙BLE模式或者Wi-FiAware模式。相应的,移动终端100可以以设定的无线通信模式搜索附近的无线信号,从而当移动终端100进入到图2中所示的虚线圈范围内时,就可以接受到支付机具200发送的广播数据。
作为一种方式,在移动终端100可以接收到支付机具200发送的广播数据后,移动终端100可以与支付机具200基于当前所采用的无线通信模式建立无线连接,进而在建立无线连接以后,移动终端100可以从支付机具存储的数据中获取到唯一性标识支付机具的设备标识。而作为另外一种方式,为了便于降低移动终端100的功耗,支付机具200可以在自己发送的广播数据中携带自己的设备标识,从而使得移动终端100在接收到支付机具200发送的广播数据后,可以从广播数据200中获取到发送该广播数据的支付机具200的设备标识。
可选的,移动终端100在获取到支付机具200的设备标识以后,可以通过移动通信网络的基站310以及网关311将所获取的设备标识以及自己存储的支付帐号发送到支付服务器300。再者,移动终端100也可以通过无线热点320将获取的设备标识以及自己存储的支付帐号发送到支付服务器300。而当支付服务器300接收到移动终端100发送的设备标识以及支付帐号后,就会将该设备标识以及支付帐号进行绑定,从而表征支付帐号的所属用户在该设备标识所属支付机具的附近。进而,当支付机具200在支付过程中,将采集的生物特征信息发送到支付服务器300后,支付服务器300可以在验证生物特征信息对应的支付帐号与该支付机具的设备标识绑定的情况下,完成该支付帐号的支付操作。
基于上面介绍的系统以及系统运行流程,下面将结合附图具体描述本申请的各实施例。
请参阅图3,本申请实施例提供的一种数据包转发方法,应用于移动终端的系统服务,所述方法包括:
步骤S110:当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,所述系统服务将所述广播数据的数据包作为当次接收的数据包,获取与所述当次接收的数据包对应的第一时间戳。
需要说明的是,在本实施例中的系统服务可以为图1所示的第一程序,而后续的目标程序可以为图1中的第二程序。
基于前述图2所示的系统可知,为了便于移动终端获取到支付机具的设备标识,支付机具可以基于蓝牙BLE模式或者Wi-Fi Aware模式发送广播数据。以蓝牙BLE模式为例,支付机具可以在以蓝牙BLE模式发送广播数据的过程中,在所发送的数据包中的特定字段中携带自己的设备标识。
如下表所示的一种基于蓝牙BLE广播的beacon数据包的格式。
在上表所示的数据包的格式中名称为Length字段用于表征数据包的长度,名称为Type的字段表征当前数据包的连接类型,名称为MFG ID的字段表征发送该数据包的蓝牙模块的生产商的ID,名称为iBeacon的字段表征当前的数据包为基于iBeacon模式生成,名称为MD5的字段表征数据包所携带的基于MD5方式加密后的设备标识,字段名称Major、Minor以及Ref均用于携带特征值,以区别同一设备发送的不同数据包。那么可以看出的是,在上表所示的数据包中可以在16Byte长度的字段处添加支付机具的设备标识。需要说明的是,上表所示的数据包格式以及每个字段的名称只是示例性的,支付机具所发送的广播数据的数据包格式以及字段名称还可以根据实际所携带的数据进行改变。
相应的,所述移动终端也可以基于蓝牙BLE模式或者Wi-Fi Aware模式进行广播数据扫描,从而在扫描到支付机具发送的广播数据后,从扫描到的支付机具发送的广播数据中获取所述支付机具的设备标识。例如,若移动终端以蓝牙BLE模式进行广播数据扫描,那么在扫描到支付机具同样以蓝牙BLE模式发送的广播数据后,可以从上表所示的广播数据的数据包的16Byte长度的字段中解析出支付机具的设备标识。
需要说明的是,若支付机具以Wi-Fi Aware模式发送广播数据,支付机具也可以以相似的方式广播自己的设备标识,相应的,移动终端也可以采用相似的方式获取到支付机具的设备标识。
那么基于上述方式,系统服务可以实时检测移动终端所扫描到的支付机具所发送的广播数据的数据包,在检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,所述系统服务将所述广播数据的数据包作为当次接收的数据包。
当在获取到当次接收的数据包后,可以进一步的获取到当次接收的数据包对应的第一时间戳。其中,移动终端可以有多种方式来获取当次接收的数据包对应的第一时间戳。
作为一种方式,支付机具在生成广播数据的数据包的过程中,可以将支付机具的当前系统时间写入到所生成的数据包的特定字段中。在这种方式下,移动终端可以在获取到当次接收的数据包以后,从数据包中读取该特定字段的值作为当次接收的数据包对应的第一时间戳。在这种方式下,移动终端中接收到的数据包对应的第一时间戳都是统一由支付机具根据支付机具的系统时间生成的,而不同支付机具的系统时间都是与支付服务器同步的,进而可以使得整个系统下的时间戳都是统一的,不会造成时间错乱,进而使得移动终端在后续比较不同的时间戳时,能够得到较为准确的数据。
作为另外一种方式,系统服务在检测到移动终端扫描到支付机具发送的广播数据的数据包时,可以获取当前移动终端的系统时间作为当次接收的数据包对应的第一时间戳。在这种方式下,可以避免因为由其他非法设备冒充合法的支付机具发送广播数据,又因为非法设备的系统时间与合法的支付机具的系统时间不同步,造成的移动终端无法准确的进行时间戳的比较。而对于此处为何会造成的移动终端无法准确的进行时间戳的比较,后续会再进行详细的叙述。
步骤S120:获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳。
步骤S130:计算所述第一时间戳和所述第二时间戳之间的间隔,判断所述间隔是否小于指定阈值。
步骤S140:若所述间隔不小于指定阈值,将所述当次接收的数据包进行缓存并转发给目标程序。
下面将继续对前述的因为非法设备的系统时间与合法的支付机具的系统时间不同步,造成的移动终端无法准确的进行时间戳的比较进行详细的描述。例如,当前有携带的设备标识相同的合法的支付机具A以及非法的支付机具B,且该支付机具A的系统时间与该支付机具B的系统时间差a秒钟,那么若移动终端采用以接收到的数据包本身携带的时间戳作为数据包对应的时间戳的情况下,若移动终端先接收到支付机具A发送的数据包后,将该支付机具A发送的广播数据的数据包a作为当次接收到的数据包,且获取到的当次接收到的数据包a对应的第一时间戳为m。
而对于非法的支付机具B在支付机具A生成数据包a的同时生成有广播数据的数据包b,那么在移动终端已经将支付机具A生成数据包a判定为进行缓存并转发给目标程序后,再接收到了支付机具B发送的广播数据的数据包b后,此时的缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包已经是前述的数据包a,而因为支付机具A的系统时间与该支付机具B的系统时间差a秒钟,那么数据包b对应的第一时间戳和数据包a对应的第二时间戳之间本身就有至少a秒钟的差距,进而造成此种情况下第一时间戳和所述第二时间戳之间的间隔更大概率的不小于指定阈值,进而造成可能不该被进行缓存并转发给目标程序的数据包会被转发给目标程序,从而造成目标程序被无效调起,造成无效的开销。
作为再一种方式,移动终端还可以同时基于数据包本身携带的时间戳以及移动终端的系统时间进行当次接收到的数据包的第一时间戳与缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳的比对。
可以理解的是,支付机具发送广播数据的数据包的频率通常是固定的。例如,会按照每2秒一次或者每3秒一次发送广播数据的数据包。那么若移动终端处于支付机具的无线信号覆盖内,且保持无线信号扫描的情况下,也是会以相同或者相似的频率扫描到数据包的。例如,移动终端也会每隔2秒或者每隔3秒就扫描到一次数据包。但是,非法的支付机具发送的广播数据的数据包的频率和合法的支付机具的发送广播数据的数据包的频率可能会不同,就会造成移动终端扫描到广播数据的数据包的频率发生改变。例如,若移动终端开始接收的数据包的频率为2秒一次,而当同时还会接收到非法的支付机具发送的广播数据后,可能就会变成1秒一次。
那么在这种情况下,移动终端从开始进行数据包的扫描的时刻起,以数据包本身携带的时间戳进行时间戳比对。即移动终端将当次接收到的数据包自己携带的时间戳作为第一时间戳,而将缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包携带的时间作为第二时间戳。而当移动终端从开始进行数据包的扫描的时刻起检测到接收到数据包的频率发生改变后,以移动终端自己的系统时间进行时间戳比对。即移动终端将当次接收到的数据包时的系统时间作为第一时间戳,而将缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包时的系统时间作为第二时间戳。通过前述方式,使得移动终端可以更加灵活的确定第一时间戳以及第二时间戳,并提升所计算的所述第一时间戳和所述第二时间戳之间的间隔的准确性。
步骤S150:若所述间隔小于指定阈值,将所述当次接收的数据包丢弃。
需要说明的是,移动终端接收到的数据包为携带有支付机具的设备标识的广播数据的数据包,而移动终端获取该数据包的一个目的是为了得到支付机具的设备标识,那么系统服务在将数据包转发给目标程序的过程中,可以只将数据包中的设备标识发送给目标程序,进而降低数据传输量。
还有,在一种方式中,系统服务中嵌入有目标程序对应的插件,例如SDK(SoftwareDevelopment Kit)插件。而目标程序提供与该插件数据交互的接口,那么系统服务可以通过该插件将数据包转发给目标程序提供的该接口,从而实现将数据包转发给目标程序。
在一种方式中,移动终端可能会同时处于多个支付机具的无线信号覆盖范围内。例如,如图4所示,移动终端100同时处于支付机具200a和支付机具200b的无线信号覆盖范围内。那么在这种情况下,移动终端100可以扫描到支付机具200a发送的广播数据的数据包以及支付机具200b发送的广播数据的数据包。而因为对于数据包是否可以被转发到目标应用程序是基于同一个支付机具的数据包进行判断的,那么图4中的支付机具200a和支付机具200b所发送的数据包是要分别进行判断的。那么在这种方式下,为了便于提升移动终端的系统服务的数据包的时间戳的比对效率,对于不同的支付机具发送的数据包,系统服务可以启用不同的线程来进行处理,以便通过多线程的方式提升数据包的对比效率,进而提升移动终端将设备标识以及支付帐号上传给支付服务器的效率。
可以理解的是,系统服务所启动的同时运行的线程越多,所消耗的资源也就越多。再者,移动终端通常是跟随用户移动的,那么移动终端所接收到的某些支付机具发送的数据包的数量也会是变动的,作为进一步的一种方式,即使移动终端当前处于多个支付机具的无线信号覆盖范围内的情况下,系统服务可以根据一段时间内接收到的广播数据的数据包的数量来确定开启线程的数量。该一段时间内接收到的广播数据的数据包的数量包括接收到的不同的支付机具发送的数据包的数量。
可选的,当移动终端检测到指定时间段内接收到的数据包的数量超过目标阈值后,就针对不同的支付机具发送的数据包分别启动不同的线程进行后续的时间戳比对处理,而当移动终端检测到指定时间段内接收到的数据包的数量未超过目标阈值,就可以只启动一条线程来处理所有的数据包的后续的时间戳比对处理。通过上述方式,可以使得系统服务灵活的根据所接收到的数据包的数量来确定启动的线程的数量,进而可以提升数据包的时间比对的效率以及数据包转发的效率。
本申请提供的一种数据包转发方法,在当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,会将所述系统服务将所述广播数据的数据包作为当次接收的数据包,进而再获取与所述当次接收的数据包对应的第一时间戳,然后再获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳,进而计算所述第一时间戳和所述第二时间戳之间的间隔,在当所述间隔不小于指定阈值的情况下,将所述当次接收的数据包进行缓存并转发给目标程序。从而通过前述方式可以使得移动终端不会将每次接收到的广播数据的数据包都转发给目标程序,而是基于设定的时间间隔来确定是否将当次接收到的广播数据的数据包转发给目标程序,进而降低了无效的调起目标程序的次数,降低了移动终端的功耗。
请参阅图5,本申请另一实施例提供的一种数据包转发方法,应用于移动终端的系统服务,所述方法包括:
步骤S210:当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,所述系统服务将所述广播数据的数据包作为当次接收的数据包,获取与所述当次接收的数据包对应的第一时间戳。
步骤S220:判断所述移动终端是否缓存有所述支付机具发送的广播数据的数据包。
作为一种方式,移动终端在接收到支付机具发送的广播数据的数据包,并判定该数据包可以被缓存后,可以通过key-value的方式进行数据包的存储。其中,该key可以为从数据包中获取的唯一标识数据包的指定参数。而该value为数据包的数据,例如,可以为对应的时间戳。可选的,所述指定参数包括MAC地址或者自定义字段。例如,如下表所示的一种key-value方式。
ID |
Data_id |
Data_time |
1 |
aa-bb-cc-dd-00-00 |
time1 |
2 |
ab-bd-cc-dd-00-00 |
time2 |
在上表中,字段“Data_id”存储数据包的MAC地址,字段“Data_time”存储数据包的时间戳。
在这种方式下,移动终端可以获取所述当次接收的数据包中指定参数的值为参考值,所述指定参数的值用于唯一性标识广播数据的数据包的发送端,查找已缓存广播数据的数据包的所述指定参数的值中是否有与所述参考值匹配的值,若有匹配的值,判定缓存有所述支付机具发送的广播数据的数据包。例如,若系统服务获取到当次接收到的数据包的MAC地址为“aa-bb-cc-dd-00-00”,那么根据上表就可以判定,移动终端已经缓存有所述支付机具发送的广播数据的数据包。
需要说明的是,在一种方式下,支付机具在生成广播数据的数据包时不再使用全局唯一的MAC地址,而是使用私有的MAC地址,该私有的MAC地址会随着时间变化,且不能保证全局唯一,进而使得支付机具自己的唯一性MAC不会暴露,提升安全性。那么在这种模式下,移动终端接收到的数据包的所携带的MAC地址是可能会随着时间变化的。那么在这种方式下,移动终端如果依然采用数据包中携带的MAC地址作为数据包的唯一性标识,那就就可能会造成识别错误。
那么在这种方式下,移动终端在缓存数据包时,可以缓存更多的数据包的参数。如下表所示:
ID |
Data_id |
Device_id |
Data_time |
1 |
aa-bb-cc-dd-00-00 |
G001 |
time1 |
2 |
ab-bd-cc-dd-00-00 |
G002 |
time2 |
如上表所示,移动终端在缓存数据包时,除了缓存MAC地址外,还可以缓存发送数据包的支付机具的设备标识。也就是字段“Device_id”所表征的内容。进而移动终端的系统服务可以灵活的根据当次接收到的数据包的封装协议来确定采用那个参数来作为当次判定的指定参数。具体的,系统服务获取所述当次接收的数据包中协议特征参数,所述协议特征参数表征封装广播数据的数据包时所采用的协议,根据所述协议特征参数从广播数据的数据包包括的多个参数中确定指定参数,所述指定参数的值用于唯一性标识广播数据的数据包的发送端,获取所述当次接收的数据包中所述指定参数的值为参考值,查找已缓存广播数据的数据包的所述指定参数的值中是否有与所述参考值匹配的值,若有匹配的值,判定缓存有所述支付机具发送的广播数据的数据包。可以理解的是,若系统服务按照上表的方式进行数据包的缓存,那么系统服务就可以从MAC地址以及设备标识中选择一个参数作为确定的指定参数。通过上述方式,可以使得移动终端的系统服务不仅可以以比较通用的MAC地址来确定数据包发送端的唯一性,还可以在确定MAC地址无法实际表征唯一性时,灵活采用其他的参数来确定数据包发送端的唯一性,进而使得整个判断过程具有很多的适配性的情况下,也具有很好的灵活性。
需要说明的是,系统服务在缓存数据包时,所缓存的数据包所携带的参数可以根据实际情况进行改变,前述表中的内容只是示例性的。例如,还可以在数据包中添加支付机具的IP地址作为前述的指定参数。
若判定未缓存有所述支付机具发送的广播数据的数据包,直接执行后续的步骤S232。
步骤S230:若判定缓存有所述支付机具发送的广播数据的数据包,获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳。
步骤S231:计算所述第一时间戳和所述第二时间戳之间的间隔。
步骤S232:若所述间隔不小于指定阈值,将所述当次接收的数据包进行缓存并转发给目标程序。
步骤S233:若所述间隔小于指定阈值,将所述当次接收的数据包丢弃。
本申请提供的一种数据包转发方法,通过前述方式可以使得移动终端不会将每次接收到的广播数据的数据包都转发给目标程序,而是在判定移动终端当前是首次接收到该支付机具发送的广播数据的数据包后,或者而是确定当次接收到的广播数据的数据包的第一时间戳与上一次接收到所述支付机具发送的广播数据的数据包对应的第二时间戳的间隔不小于指定阈值后,将当次接收到的广播数据的数据包转发给目标程序,进而降低了无效的调起目标程序的次数,降低了移动终端的功耗。
请参阅图6,本申请再一实施例提供的一种数据包转发方法,应用于移动终端的系统服务,所述方法包括:
步骤S310:当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,所述系统服务将所述广播数据的数据包作为当次接收的数据包,获取与所述当次接收的数据包对应的第一时间戳。
步骤S320:获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳。
步骤S330:计算所述第一时间戳和所述第二时间戳之间的间隔。
步骤S331:若所述间隔小于指定阈值,将所述当次接收的数据包丢弃。
步骤S340:若所述间隔不小于指定阈值,检测是否有目标程序对应的数据上报服务在运行。
可以理解的是,若系统服务直接将数据包转发给目标程序,那么需要先触发目标程序启动以便接收数据包。而移动终端在启动目标程序的过程中,需要消耗一定的CPU资源以及存储资源。在一种方式中,应用程序可以对应有轻量级的程序运行,可选的,该轻量级的程序可以为基于service的数据上报服务,该数据上报服务可以仅负责将接收到的数据上报给支付服务器。再者,因为基于service的数据上报服务是独立于目标程序以外运行的,所以在运行过程中不会额外增加目标应用程序对应的资源开销。在这种情况下,系统服务在检测到目标程序有对应的数据上报服务在运行的情况下,可以直接将当次接收到的数据包转发给数据上报服务,然后由数据上报服务将接收到的数据包发送给支付服务器,从而避免启动目标程序的过程中的资源开销。
步骤S350:若有,将所述当次接收的数据包进行缓存并转发给目标程序对应的数据上报服务。
步骤S360:若无,将所述当次接收的数据包进行缓存并转发给目标程序。
本申请提供的一种数据包转发方法,通过前述方式可以使得移动终端不会将每次接收到的广播数据的数据包都转发给目标程序,而是基于设定的时间间隔来确定是否将当次接收到的广播数据的数据包转发给目标程序,进而降低了无效的调起目标程序的次数,降低了移动终端的功耗。并且,在系统服务在执行数据包转发之前,会先检测是否有目标程序对应的数据上报服务在运行,进而当由数据上报服务在运行的情况下,就将数据包转发给数据上报服务,进一步的避免了触发目标应用程序启动,造成不必要的系统开销。
请参阅图7,本申请实施例提供的一种数据包转发装置400,运行于移动终端的系统服务,所述装置400包括:
时间获取单元410,用于当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,将所述广播数据的数据包作为当次接收的数据包,获取与所述当次接收的数据包对应的第一时间戳。
所述时间获取单元410,还用于获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳。
转发条件计算单元420,用于计算所述第一时间戳和所述第二时间戳之间的间隔。
数据包转发单元430,用于若所述间隔不小于指定阈值,将所述当次接收的数据包进行缓存并转发给目标程序。
作为一种方式,如图8所示,所述装置400还包括缓存数据判断单元440,用于判断所述移动终端是否缓存有所述支付机具发送的广播数据的数据包。在这种方式下,若所述缓存数据判断单元440判定缓存有所述支付机具发送的广播数据的数据包,所述时间获取单元410才会执行获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳。
可选的,缓存数据判断单元440具体用于获取所述当次接收的数据包中指定参数的值为参考值,所述指定参数的值用于唯一性标识广播数据的数据包的发送端;查找已缓存广播数据的数据包的所述指定参数的值中是否有与所述参考值匹配的值;若有匹配的值,判定缓存有所述支付机具发送的广播数据的数据包。其中,指定参数包括MAC地址或者自定义字段。
可选的,缓存数据判断单元440具体用于获取所述当次接收的数据包中协议特征参数,所述协议特征参数表征封装广播数据的数据包时所采用的协议;根据所述协议特征参数从广播数据的数据包包括的多个参数中确定指定参数,所述指定参数的值用于唯一性标识广播数据的数据包的发送端;获取所述当次接收的数据包中所述指定参数的值为参考值;查找已缓存广播数据的数据包的所述指定参数的值中是否有与所述参考值匹配的值;若有匹配的值,判定缓存有所述支付机具发送的广播数据的数据包。
作为一种方式,如图9所示,所述装置400还包括应用服务判断单元450,用于检测是否有目标程序对应的数据上报服务在运行。在这种方式下,若应用服务判断单元450检测到有目标程序对应的数据上报服务在运行,所述数据包转发单元430,用于将所述当次接收的数据包进行缓存并转发给目标程序对应的数据上报服务。若应用服务判断单元450检测到没有目标程序对应的数据上报服务在运行,用于将所述当次接收的数据包进行缓存并转发给目标程序。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性。另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
下面将结合图10对本申请提供的一种移动终端进行说明。
请参阅图10,基于上述的数据包转发方法、装置,本申请实施例还提供的另一种可以执行前述数据包转发方法的移动终端100。移动终端100包括相互耦合的一个或多个(图中仅示出一个)处理器102、存储器104以及无线模块106。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行该存储器104中存储的程序。
其中,处理器102可以包括一个或者多个处理核。处理器102利用各种接口和线路连接整个移动终端100内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行移动终端100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器102可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。
存储器104可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
所述无线模块106用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,例如和音频播放设备进行通讯。所述无线模块106可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。作为一种方式,该无线模块106可以为蓝牙模块,在这种方式下,该无线模块106可以基于蓝牙BLE模式扫描支付机具基于蓝牙广播的数据包。作为另外一种方式,该无线模块106可以为WiFi Aware模块,相应的,在这种方式下,该无线模块106可以基于WiFi Aware模式扫描支付机具基于WiFi Aware广播的数据包。
请参考图11,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
综上所述,本申请提供的一种数据包转发方法、装置及移动终端,在当检测到所述移动终端接收到支付机具通过无线的方式发送的广播数据的数据包后,会将所述系统服务将所述广播数据的数据包作为当次接收的数据包,进而再获取与所述当次接收的数据包对应的第一时间戳,然后再获取缓存的上一次所述移动终端接收到所述支付机具发送的广播数据的数据包对应的第二时间戳,进而计算所述第一时间戳和所述第二时间戳之间的间隔,在当所述间隔不小于指定阈值的情况下,将所述当次接收的数据包进行缓存并转发给目标程序。从而通过前述方式可以使得移动终端不会将每次接收到的广播数据的数据包都转发给目标程序,而是基于设定的时间间隔来确定是否将当次接收到的广播数据的数据包转发给目标程序,进而降低了无效的调起目标程序的次数,降低了移动终端的的资源的开销。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。