移动终端TCP通信、装置、设备及存储介质的制作方法

文档序号:27392984发布日期:2021-11-15 22:33阅读:197来源:国知局
移动终端TCP通信、装置、设备及存储介质的制作方法
移动终端tcp通信、装置、设备及存储介质
技术领域
1.本发明涉及通信测试技术领域,尤其涉及一种移动终端tcp通信方法、装置、设备及存储介质。


背景技术:

2.目前,现有的tcp网络通信在多端口通信场景下,通常将通信层全部运行由应用app的主线程执行,循环判断各通信端口是否有数据需要处理,这样容易造成终端的应用app运行性能较低,加上通信层的代码执行异常时,可能会造成终端的应用app异常甚至崩溃。
3.此外在终端开发流程中,无论是ios、安卓端,还是h5的,都是使用已经封装好的网络通信库,开发者只需要开箱即可使用,因为这些网络通信库都是基于各个平台开发,使用不同的程序语言及业务性代码杂糅在一起,所以各个网络通信库难以迁移复用,当各个网络通信库的端口与远程服务器通信时,连接程序都要重写,这样容易占用终端的大量内存,造成终端与用户交互时运行卡顿。


技术实现要素:

4.鉴于以上内容,本发明提供一种移动终端tcp通信方法、装置、设备及存储介质,其目的在于解决现有技术中应用app的主线程判断及处理各通信端口的数据,造成终端的应用app运行性能较低,和h5通信库难以迁移复用的技术问题。
5.为实现上述目的,本发明提供一种移动终端tcp通信方法,该方法包括:
6.从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用app的主线程之间通信;
7.根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信;
8.实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
9.建立所述终端的h5与所述应用app的连接协议,根据所述连接协议建立所述h5与所述应用app之间通信,以供所述h5与所述新的目标远程服务器建立通信。
10.优选的,所述从所述终端的预设数据库中读取配置数据,包括:
11.当所述预设数据库中未存储有所述配置数据时,向配置服务器请求下发所述配置数据并存储至所述预设数据库中;
12.当所述预设数据库中存储有所述配置数据时,向所述配置服务器查询是否有更新版本的配置数据,当有更新版本的配置数据时,向所述配置服务器请求下发更新版本的配
置数据并以所述更新版本的配置数据替换所述预设数据库中存储的配置数据。
13.优选的,所述开启一个子线程并基于所述子线程创建预设中转模块,包括:
14.开启一个子线程并基于所述子线程对应的socket pair端口创建所述中转模块,用于临时接收和发送数据。
15.优选的,所述利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,包括:
16.根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
17.创建epoll函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
18.优选的,所述根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信,包括:
19.当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用app的主线程读取所述接收缓冲区的数据;
20.当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用app的主线程所述发送缓冲区的数据已完成发送。
21.优选的,所述建立所述终端的h5与所述应用app的连接协议,包括:
22.利用所述应用app与所述终端的h5建立jsbridge通信连接并约定一个伪协议格式。
23.优选的,所述h5与所述新的目标远程服务器建立通信,包括:
24.对所述h5发送的请求进行拦截,利用所述应用app根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
25.接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用app与所述新的目标远程服务器通信协定的数据格式后,通过所述jsbridge回调给所述h5;
26.为实现上述目的,本发明还提供一种移动终端tcp通信装置,所述装置包括:
27.连接模块:用于从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用app的主线程之间通信;
28.通信模块:用于根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信;
29.判断模块:用于实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
30.响应模块:用于建立所述终端的h5与所述应用app的连接协议,根据所述连接协议建立所述h5与所述应用app之间通信,以供所述h5与所述新的目标远程服务器建立通信。
31.为实现上述目的,本发明还提供一种终端,所述终端包括:
32.至少一个处理器;以及,
33.与所述至少一个处理器通信连接的存储器;其中,
34.所述存储器存储有可被所述至少一个处理器执行的程序,所述程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述移动终端tcp通信方法。
35.为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有移动终端tcp通信程序,所述移动终端tcp通信程序被处理器执行时,实现如权利要求1至7中任一项所述移动终端tcp通信方法的步骤。
36.本发明提出的移动终端tcp通信方法、装置、设备及存储介质,根据应用app的主线程和子线程的架构分层设计,不需要应用app的主线程轮询各通信端口是否需要读取或写入数据,而子线程创建的中转模块代替应用app的主线程去判断各通信端口是否需要读取或写入数据,当判断端口的数据达到预设阈值时,通知应用app的主线程读取数据,实现应用app的主线程只负责ui和逻辑处理,减轻应用app的主线程工作负荷,提高终端与用户交互时的流畅体验。
37.根据h5与应用app协定的连接协议,h5发送和接收的数据可以沿用由应用app与目标远程服务器建立的通信程序,从而建立h5与目标远程服务器通信,松轻解决h5的复用场景问题,不需要h5或其它app的端口与远程服务器连接时重写连接程序,减少过多的程序占用终端的内存空间,提升终端页面流畅的运行。
附图说明
38.图1为本发明终端较佳实施例的示意图;
39.图2为图1中移动终端tcp通信装置较佳实施例的模块示意图;
40.图3为本发明移动终端tcp通信方法较佳实施例的流程图;
41.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
42.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.参照图1所示,为本发明终端1较佳实施例的示意图。
44.该终端1包括但不限于:存储器11、处理器12、显示器13及网络接口14。所述终端1通过网络接口14连接网络,获取原始数据。其中,所述网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobilecommunication,gsm)、宽带码分多址(wideband code division multiple access,wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi

fi通话网络等无线或有线网络。
45.其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存
储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述终端1的内部存储单元,例如该终端1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述终端1的外部存储设备,例如该终端1配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器11还可以既包括所述终端1的内部存储单元也包括其外部存储设备。本实施例中,存储器11通常用于存储安装于所述终端1的操作系统和各类应用软件,例如移动终端tcp通信程序10的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
46.处理器12在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述终端1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行移动终端tcp通信程序10的程序代码等。
47.显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organic light

emittingdiode,oled)触摸器等。显示器13用于显示在终端1中处理的信息以及用于显示可视化的工作界面,例如显示数据统计的结果。
48.网络接口14可选地可以包括标准的有线接口、无线接口(如wi

fi接口),该网络接口14通常用于在所述终端1与其它终端之间建立通信连接。
49.图1仅示出了具有组件11

14以及移动终端tcp通信程序10的终端1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
50.可选地,所述终端1还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organic light

emitting diode,oled)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在终端1中处理的信息以及用于显示可视化的用户界面。
51.该终端1还可以包括射频(radio frequency,rf)电路、传感器和音频电路等等,在此不再赘述。
52.在上述实施例中,处理器12执行存储器11中存储的移动终端tcp通信程序10时可以实现如下步骤:
53.从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用app的主线程之间通信;
54.根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信;
55.实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
56.建立所述终端的h5与所述应用app的连接协议,根据所述连接协议建立所述h5与
pair端口创建回环ip地址的绑定关系,根据该中转模块建立该子线程与终端的一个应用app的主线程之间通信。
72.例如,终端的应用app获取配置服务器下发的配置数据后,将配置数据至本地数据库中,获取的配置数据为一个列表,列表中包含了配置数据版本号、所有远程服务器的ip、端口号、远程服务器所在位置、通信服务类型,同时,应用app单独开启一个子线程,并基于该子线程创建一个中转模块,该中转模块根据回环地址与固定端口号构造一对socket pair,该子线程连接socket pair的一个端口,应用app的主线程连接socket pair的另一个端口,通过socket pair的两个端口建立子线程与所述终端的一个应用app的主线程之间通信。
73.相对于现有技术,本发明根据应用app的主线程和子线程的架构分层设计,不需要应用app的主线程轮询各通信端口是否需要读取或写入数据,而子线程创建的中转模块代替应用app的主线程去判断各通信端口是否需要读取或写入数据,实现应用app的主线程只负责ui和逻辑处理,减轻应用app的主线程工作负荷,提高终端与用户交互时的流畅体验。
74.通信模块120,用于根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信。
75.本实施例中,根据手机等自助终端设备当前的位置信息,位置信息包括但不限于为移动网络基站信息、手机的坐标信息,由于配置数据具有每个远程服务器的ip和端口,根据终端当前的位置信息距离最近的远程服务器作为目标远程服务器,同时,终端的中转模块与该目标远程服务器的ip和端口创建预设数量的套接字,套接字是指对通信中不同终端上的应用进程之间进行双向通信的端点的抽象,也叫socket,预设数量是根据终端使用场景的需要来设定,终端的中转模块根据每个套接字建立应用app与目标远程服务器之间的tcp通信。
76.例如,根据手机等自助终端设备当前的位置信息,终端的应用app利用中转模块与终端当前的位置信息距离最近的远程服务器创建多个套接字,应用app根据每个套接字与远程服务器建立tcp通信,套接字的数量是根据终端使用场景的需要,若当前终端运行的一个app内有多种不同类型的数据需要在不同的链路上独立发送、接收处理,比如:邮件数据、im数据需要在2条不同的数据链路上发送接收,则在该app内可以与远程服务器创建2个套接字通信。
77.在一个实施例中,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,包括:
78.根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
79.创建epoll函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
80.终端的中转模块为每个套接字创建初始化的用户缓冲区,用户缓冲区包括发送缓冲区和接收缓冲区,发送缓冲区用于将发送给远程服务器的数据从用户空间拷贝至内核空间,接收缓冲区用于接受从远程服务器发送的数据从内核空间拷贝至用户空间。
81.例如,初始化后的发送缓冲区和接收缓冲区的空间值范围为(0

4096byte),同时,
中转模块根据实际监测的场景需要分别设置,设置接收缓冲区的预设阈值作为第一预设阈值,设置发送缓冲区的预设阈值作为第二预设阈值,每次将数据写入发送缓冲区或从接收缓冲区读取数据,中转模块会绑定该数据的回调函数,当发送缓冲区数据写入内核或数据读取至接收缓冲区时触发该回调函数,确定发送缓冲区或接收缓冲区的容量值是否达到对应的预设阈值。
82.终端建立epoll函数的抽象文件对象拷贝至内核中,抽象文件对象包含了文件描述符、索引树、就绪列表、等待队列等,抽象文件对象将每个套接字插入索引树中,在内核中注册套接字的事件并监测套接字的事件,监测的事件包括套接字的读数据事件和写数据事件,epoll函数能够高效的管理每个套接字,确保终端的应用app与目标远程服务器之间稳定通信。
83.例如,抽象文件对象内的索引树会查找内核中任意一个套接字的注册记录,如果有该套接字注册记录,代表该套接字已经被内核监测,如果没有该套接字注册记录,抽象文件对象将该套接字插入索引树中,并将该套接字需要监测的事件注册进内核中进行监测,同时,内核将抽象文件对象拷贝至每个套接字的等待队列上,内核还将终端的进程挂载至抽象文件对象的等待队列上进行睡眠。
84.在一个实施例中,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信,包括:
85.当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用app的主线程读取所述接收缓冲区的数据;
86.当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用app的主线程所述发送缓冲区的数据已完成发送。
87.当内核监测到任意一个套接字有事件触发,中转模块会接收到epoll函数的返回值,然后中转模块会根据事件类型将数据写入发送缓冲区或从内核拷贝至接收缓冲区,并触发回调函数,内核在该回调函数内判断该套接字的事件类型:
88.当内核判断该套接字为读数据事件时,说明该套接字有数据从远程服务器发送到来,中转模块将该套接字在内核内的数据拷贝至接收缓冲区,拷贝进去接收缓冲区的数据可以代表接收缓冲区的第一容量值,例如,拷贝进去的数据为16byte,那么接收缓冲区的第一容量值为16byte,接收缓冲区的第一容量值是根据套接字在内核内的数据值的大小决定,中转模块在回调函数中确定接收缓冲区的第一容量值,中转模块并判断第一容量值是否大于或等于第一预设阈值,当判断第一容量值大于或等于第一预设阈值时,中转模块通过该回调函数通知应用app的主线程读取接收缓冲区的全部数据,例如,第一预设阈值为8byte,开始时接收缓冲区中的数据是空的,接收到数据后,接收缓冲区的数据会越来越多,当第一容量值超过预设阈值8byte后,中转模块通过该回调函数通知应用app的主线程读取接收缓冲区的全部数据。
89.当内核判断该套接字为写数据事件时,说明有数据从应用app的主线程写入发送缓冲区内,中转模块将发送缓冲区内的数据写入内核中,写入发送缓冲区的数据可以代表发送缓冲区的第二容量值,例如,写入的数据为16byte,那么发送缓冲区的第二容量值为
16byte,发送缓冲区的第二容量值是根据应用app的主线程写入数据值的大小决定,中转模块在回调函数中确定发送缓冲区的第二容量值,中转模块并判断第二容量值是否小于或等于第二预设阈值,当判断第二容量值小于或等于第二预设阈值时,中转模块通过该回调函数通知应用app的主线程发送缓冲区的数据已完成发送,例如,第二预设阈值时为1byte,当第二容量值低于1byte,说明发送缓冲区中的全部数据发送至目标远程服务器,中转模块通过该回调函数通知应用app的主线程发送缓冲区的数据已完成发送。
90.相对于现有技术,本发明根据中转模块创建套接字建立了应用app与目标远程服务器的tcp通信,中转模块代替应用app的主线程去判断各通信端口是否需要读取或写入数据,当判断端口的数据达到预设阈值时,通知应用app的主线程读取数据,减轻应用app的主线程工作负荷,这样可以降低频繁调用应用app的主线程,能够让应用app的主线程及时处理终端与用户的交互信息,提高终端的页面流畅运行。
91.判断模块130,用于实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器。
92.本实施例中,终端的应用app实时判断终端的位置信息是否发生变化,当终端所在的移动网络基站信息、坐标信息等其中一个或多个发生变化时,由于配置数据具有每个远程服务器的ip和端口等信息,根据每个远程服务器的ip、端口、远程服务器所在位置、通信服务类型等信息,重新选取与终端的位置信息距离最近的远程服务器的,作为新的目标远程服务器,进行通信从而降低网络的传输延迟。
93.例如,当手机等自助终端设备从a地方移动到b地方,终端的应用app判断到终端所在的移动网络基站信息或坐标信息发生变化时,根据配置数据中的所有远程服务器中的ip、端口、远程服务器所在位置、通信服务类型等信息,选取与b地方距离最近的远程服务器进行通信,同时,切换在a地方通信的远程服务器,从而降低网络的传输延迟。
94.响应模块140,用于建立所述终端的h5与所述应用app的连接协议,根据所述连接协议建立所述h5与所述应用app之间通信,以供所述h5与所述新的目标远程服务器建立通信。
95.本实施例中,建立应用app与终端的h5的连接协议,连接协议包括:应用app与终端的h5建立jsbridge通信连接并约定一个伪协议格式,h5是指移动端web网页,例如,html5、微信网页、移动ppt等,jsbridge是指应用app和非应用app之间的桥梁,例如,nativeapp和非nativeapp之间通信的通道,而且这个通信的通道是双向的,根据连接协议建立h5与应用app之间通信,h5的发送和接收的数据由应用app及中转模块进行转发,建立h5与新的目标远程服务器通信。
96.在一个实施例中,建立所述终端的h5与所述应用app的连接协议,包括:
97.利用所述应用app与所述终端的h5建立jsbridge通信连接并约定一个伪协议格式。
98.首先应用app与终端的h5建立jsbridge通信连接并约定一个伪协议格式,伪协议格式包括:伪协议名称、方法、参数、回调id,h5根据伪协议建立一个随机数作为回调id,并根据回调id构造对应的第一回调函数,h5在页面内按照伪协议动态创建一个iframe节点和src地址来触发调用应用app的接口。
99.在一个实施例中,以供所述h5与所述新的目标远程服务器建立通信,包括:
100.对所述h5发送的请求进行拦截,利用所述应用app根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
101.接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用app与所述新的目标远程服务器通信协定的数据格式后,通过所述jsbridge回调给所述h5。
102.应用app对h5的发送请求进行拦截,根据伪协议解析出该请求中的方法名、参数、回调id,先根据回调id构造第二回调函数并储存,再根据方法名调用应用app的接口,将参数在应用app的接口内转换成对应格式的数据,通过中转模块将该数据发送至新的目标远程服务器。
103.当中转模块接收到新的目标远程服务器的应答数据,中转模块将应答数据拷贝至接收缓冲区,如果接收缓冲内的第一容量值大于或等于预设阈值,中转模块通知应用app的主线程读取接收缓冲区的应答数据,基于应用app与新目标远程服务器通信协定的数据格式,例如,数据格式可以采用json数据转换格式,将该应答数据进行转换对应的数据格式,并根据应答数据的回调id取出对应的第二回调函数,在第二回调函数内将该数据格式通过jsbridge回调给h5。
104.相对于现有技术,本发明根据h5与应用app协定的连接协议,h5的发送和接收的数据由应用app及中转模块进行转发,建立h5与目标远程服务器通信,松轻解决h5的复用场景问题,不需要h5或其它app的端口与远程服务器连接时重写连接程序,减少过多的程序占用终端的内存空间,提升终端页面流畅的运行。
105.此外,本发明还提供一种移动终端tcp通信方法。参照图3所示,为本发明移动终端tcp通信方法的实施例的方法流程示意图。终端1的处理器12执行存储器11中存储的移动终端tcp通信程序10时,实现移动终端tcp通信方法,包括步骤s10

s40。以下对各个步骤进行具体说明。
106.步骤s10:从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用app的主线程之间通信。
107.本实施例中,当用户通过手机等自助终端设备向配置服务器发出请求配置数据,终端的应用app获取配置服务器下发的配置数据,应用app是基于终端的本地操作系统的第三方应用程序,例如,ios、android、wp并使用原生程式编写运行的第三方应用程序,也叫本地app、原生app或native app,终端的应用app从预设的数据库中读取该配置数据,预设的数据库可以为本地数据库、本地存储硬盘、外部数据库,同时,终端的应用app单独开启一个子线程,并基于该子线程建立一个预设中转模块,中转模块用于临时接收和发送数据,根据该中转模块建立该子线程与所述终端的一个应用app的主线程之间通信。
108.在一个实施例中,从所述终端的预设数据库中读取配置数据,包括:
109.当所述预设数据库中未存储有所述配置数据时,向配置服务器请求下发所述配置数据并存储至所述预设数据库中;
110.当所述预设数据库中存储有所述配置数据时,向所述配置服务器查询是否有更新版本的配置数据,当有更新版本的配置数据时,向所述配置服务器请求下发更新版本的配置数据并以所述更新版本的配置数据替换所述预设数据库中存储的配置数据。
111.当终端的应用app启动时,检查本地数据库中是否存储有配置数据,如果本地数据库中没有配置数据时,终端的应用app向配置服务器发出请求,获取配置服务器下发的配置数据存储至本地数据库中。
112.当终端的应用app下次启动时,如果本地数据库中已经存储有该配置数据时,终端的应用app根据该配置数据的版本号,向配置服务器请求该配置数据的更新版本,如果有更新版本的配置数据,将该更新版本的配置数据存储至本地数据库中;如果没有更新版本,终端的应用app直接启用该配置数据。
113.在一个实施例中,开启一个子线程并基于所述子线程创建预设中转模块,包括:
114.开启一个子线程并基于所述子线程对应的socket pair端口创建所述中转模块,用于临时接收和发送数据。
115.终端的应用app单独开启一个子线程,并基于该子线程对应的socket pair端口创建临时接收和发送数据的中转模块,同时,终端的应用app利用该子线程对应的socket pair端口创建回环ip地址的绑定关系,根据该中转模块建立该子线程与所述终端的一个应用app的主线程之间通信。
116.终端的应用app单独开启一个子线程,并基于该子线程对应的socket pair端口创建临时接收和发送数据的中转模块,同时,终端的应用app利用该子线程对应的socket pair端口创建回环ip地址的绑定关系,根据该中转模块建立该子线程与终端的一个应用app的主线程之间通信。
117.相对于现有技术,本发明根据应用app的主线程和子线程的架构分层设计,不需要应用app的主线程轮询各通信端口是否需要读取或写入数据,而子线程创建的中转模块代替应用app的主线程去判断各通信端口是否需要读取或写入数据,实现应用app的主线程只负责ui和逻辑处理,减轻应用app的主线程工作负荷,提高终端与用户交互时的流畅体验。
118.步骤s20:根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信。
119.本实施例中,根据手机等自助终端设备当前的位置信息,位置信息包括但不限于为移动网络基站信息、手机的坐标信息,由于配置数据具有每个远程服务器的ip和端口,根据终端当前的位置信息距离最近的远程服务器作为目标远程服务器,同时,终端的中转模块与该目标远程服务器的ip和端口创建预设数量的套接字,套接字是指对通信中不同终端上的应用进程之间进行双向通信的端点的抽象,也叫socket,预设数量是根据终端使用场景的需要来设定,终端的中转模块根据每个套接字建立应用app与目标远程服务器之间的tcp通信。
120.例如,根据手机等自助终端设备当前的位置信息,终端的应用app利用中转模块与终端当前的位置信息距离最近的远程服务器创建多个套接字,应用app根据每个套接字与远程服务器建立tcp通信,套接字的数量是根据终端使用场景的需要,若当前终端运行的一个app内有多种不同类型的数据需要在不同的链路上独立发送、接收处理,比如:邮件数据、im数据需要在2条不同的数据链路上发送接收,则在该app内可以与远程服务器创建2个套接字通信。
121.在一个实施例中,利用所述中转模块与所述配置数据中目标远程服务器的ip和端
口创建预设数量的套接字,包括:
122.根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
123.创建epoll函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
124.终端的中转模块为每个套接字创建初始化的用户缓冲区,用户缓冲区包括发送缓冲区和接收缓冲区,发送缓冲区用于将发送给远程服务器的数据从用户空间拷贝至内核空间,接收缓冲区用于接受从远程服务器发送的数据从内核空间拷贝至用户空间。
125.例如,初始化后的发送缓冲区和接收缓冲区的空间值范围为(0

4096byte),同时,中转模块根据实际监测的场景需要分别设置,设置接收缓冲区的预设阈值作为第一预设阈值,设置发送缓冲区的预设阈值作为第二预设阈值,每次将数据写入发送缓冲区或从接收缓冲区读取数据,中转模块会绑定该数据的回调函数,当发送缓冲区数据写入内核或数据读取至接收缓冲区时触发该回调函数,确定发送缓冲区或接收缓冲区的容量值是否达到对应的预设阈值。
126.终端建立epoll函数的抽象文件对象拷贝至内核中,抽象文件对象包含了文件描述符、索引树、就绪列表、等待队列等,抽象文件对象将每个套接字插入索引树中,在内核中注册套接字的事件并监测套接字的事件,监测的事件包括套接字的读数据事件和写数据事件,epoll函数能够高效的管理每个套接字,确保终端的应用app与目标远程服务器之间稳定通信。
127.例如,抽象文件对象内的索引树会查找内核中任意一个套接字的注册记录,如果有该套接字注册记录,代表该套接字已经被内核监测,如果没有该套接字注册记录,抽象文件对象将该套接字插入索引树中,并将该套接字需要监测的事件注册进内核中进行监测,同时,内核将抽象文件对象拷贝至每个套接字的等待队列上,内核还将终端的进程挂载至抽象文件对象的等待队列上进行睡眠。
128.在一个实施例中,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信,包括:
129.当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用app的主线程读取所述接收缓冲区的数据;
130.当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用app的主线程所述发送缓冲区的数据已完成发送。
131.当内核监测到任意一个套接字有事件触发,中转模块会接收到epoll函数的返回值,然后中转模块会根据事件类型将数据写入发送缓冲区或从内核拷贝至接收缓冲区,并触发回调函数,内核在该回调函数内判断该套接字的事件类型:
132.当内核判断该套接字为读数据事件时,说明该套接字有数据从远程服务器发送到来,中转模块将该套接字在内核内的数据拷贝至接收缓冲区,拷贝进去接收缓冲区的数据可以代表接收缓冲区的第一容量值,例如,拷贝进去的数据为16byte,那么接收缓冲区的第一容量值为16byte,接收缓冲区的第一容量值是根据套接字在内核内的数据值的大小决
定,中转模块在回调函数中确定接收缓冲区的第一容量值,中转模块并判断第一容量值是否大于或等于第一预设阈值,当判断第一容量值大于或等于第一预设阈值时,中转模块通过该回调函数通知应用app的主线程读取接收缓冲区的全部数据,例如,第一预设阈值为8byte,开始时接收缓冲区中的数据是空的,接收到数据后,接收缓冲区的数据会越来越多,当第一容量值超过预设阈值8byte后,中转模块通过该回调函数通知应用app的主线程读取接收缓冲区的全部数据。
133.当内核判断该套接字为写数据事件时,说明有数据从应用app的主线程写入发送缓冲区内,中转模块将发送缓冲区内的数据写入内核中,写入发送缓冲区的数据可以代表发送缓冲区的第二容量值,例如,写入的数据为16byte,那么发送缓冲区的第二容量值为16byte,发送缓冲区的第二容量值是根据应用app的主线程写入数据值的大小决定,中转模块在回调函数中确定发送缓冲区的第二容量值,中转模块并判断第二容量值是否小于或等于第二预设阈值,当判断第二容量值小于或等于第二预设阈值时,中转模块通过该回调函数通知应用app的主线程发送缓冲区的数据已完成发送,例如,第二预设阈值时为1byte,当第二容量值低于1byte,说明发送缓冲区中的全部数据发送至目标远程服务器,中转模块通过该回调函数通知应用app的主线程发送缓冲区的数据已完成发送。
134.相对于现有技术,本发明根据中转模块创建套接字建立了应用app与目标远程服务器的tcp通信,中转模块代替应用app的主线程去判断各通信端口是否需要读取或写入数据,当判断端口的数据达到预设阈值时,通知应用app的主线程读取数据,减轻应用app的主线程工作负荷,这样可以降低频繁调用应用app的主线程,能够让应用app的主线程及时处理终端与用户的交互信息,提高终端的页面流畅运行。
135.步骤s30:实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器。
136.本实施例中,终端的应用app实时判断终端的位置信息是否发生变化,当终端所在的移动网络基站信息、坐标信息等其中一个或多个发生变化时,由于配置数据具有每个远程服务器的ip和端口等信息,根据每个远程服务器的ip、端口、远程服务器所在位置、通信服务类型等信息,重新选取与终端的位置信息距离最近的远程服务器的,作为新的目标远程服务器,进行通信从而降低网络的传输延迟。
137.例如,当手机等自助终端设备从a地方移动到b地方,终端的应用app判断到终端所在的移动网络基站信息或坐标信息发生变化时,根据配置数据中的所有远程服务器中的ip、端口、远程服务器所在位置、通信服务类型等信息,选取与b地方距离最近的远程服务器进行通信,同时,切换在a地方通信的远程服务器,从而降低网络的传输延迟。
138.步骤s40:建立所述终端的h5与所述应用app的连接协议,根据所述连接协议建立所述h5与所述应用app之间通信,以供所述h5与所述新的目标远程服务器建立通信。
139.本实施例中,建立应用app与终端的h5的连接协议,连接协议包括:应用app与终端的h5建立jsbridge通信连接并约定一个伪协议格式,h5是指移动端web网页,例如,html5、微信网页、移动ppt等,jsbridge是指应用app和非应用app之间的桥梁,例如,nativeapp和非nativeapp之间通信的通道,而且这个通信的通道是双向的,根据连接协议建立h5与应用app之间通信,h5的发送和接收的数据由应用app及中转模块进行转发,建立h5与新的目标
远程服务器通信。
140.在一个实施例中,建立所述终端的h5与所述应用app的连接协议,包括:
141.利用所述应用app与所述终端的h5建立jsbridge通信连接并约定一个伪协议格式。
142.首先应用app与终端的h5建立jsbridge通信连接并约定一个伪协议格式,伪协议格式包括:伪协议名称、方法、参数、回调id,h5根据伪协议建立一个随机数作为回调id,并根据回调id构造对应的第一回调函数,h5在页面内按照伪协议动态创建一个iframe节点和src地址来触发调用应用app的接口。
143.在一个实施例中,以供所述h5与所述新的目标远程服务器建立通信,包括:
144.对所述h5发送的请求进行拦截,利用所述应用app根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
145.接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用app与所述新的目标远程服务器通信协定的数据格式后,通过所述jsbridge回调给所述h5。
146.应用app对h5的发送请求进行拦截,根据伪协议解析出该请求中的方法名、参数、回调id,先根据回调id构造第二回调函数并储存,再根据方法名调用应用app的接口,将参数在应用app的接口内转换成对应格式的数据,通过中转模块将该数据发送至新的目标远程服务器。
147.当中转模块接收到新的目标远程服务器的应答数据,中转模块将应答数据拷贝至接收缓冲区,如果接收缓冲内的第一容量值大于或等于预设阈值,中转模块通知应用app的主线程读取接收缓冲区的应答数据,基于应用app与新目标远程服务器通信协定的数据格式,例如,数据格式可以采用json数据转换格式,将该应答数据进行转换对应的数据格式,并根据应答数据的回调id取出对应的第二回调函数,在第二回调函数内将该数据格式通过jsbridge回调给h5。
148.相对于现有技术,本发明根据h5与应用app协定的连接协议,h5的发送和接收的数据由应用app及中转模块进行转发,建立h5与目标远程服务器通信,松轻解决h5的复用场景问题,不需要h5或其它app的端口与远程服务器连接时重写连接程序,减少过多的程序占用终端的内存空间,提升终端页面流畅的运行。
149.此外,本发明实施例还提出一种计算机可读存储介质,该计算机可读存储介质可以是硬盘、多媒体卡、sd卡、闪存卡、smc、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd

rom)、usb存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有移动终端tcp通信程序10,所述移动终端tcp通信程序10被处理器执行时实现如下操作:
150.从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用app的主线程之间通信;
151.根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的ip和端口创建预设数量的套接字,根据每个套接字建立所述应用app与所述目标远程服务器的tcp通信;
152.实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
153.建立所述终端的h5与所述应用app的连接协议,根据所述连接协议建立所述h5与所述应用app之间通信,以供所述h5与所述新的目标远程服务器建立通信。
154.在另一个实施例中,本发明所提供的移动终端tcp通信方法,为进一步保证上述所有出现的数据的私密和安全性,上述所有数据还可以存储于一区块链的节点中。例如中转模块、配置数据等等,这些数据均可存储在区块链节点中。
155.需要说明的是,本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
156.本发明之计算机可读存储介质的具体实施方式与上述移动终端tcp通信方法的具体实施方式大致相同,在此不再赘述。
157.需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
158.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,电子装置,或者网络设备等)执行本发明各个实施例所述的方法。
159.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1