CN113645308A - 移动终端tcp通信、装置、设备及存储介质 - Google Patents
移动终端tcp通信、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113645308A CN113645308A CN202110948755.4A CN202110948755A CN113645308A CN 113645308 A CN113645308 A CN 113645308A CN 202110948755 A CN202110948755 A CN 202110948755A CN 113645308 A CN113645308 A CN 113645308A
- Authority
- CN
- China
- Prior art keywords
- terminal
- data
- remote server
- application app
- thread
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及通信测试技术领域,提供了一种移动终端TCP通信方法、装置、设备及存储介质。该方法包括:开启一个子线程基于子线程创建中转模块,建立子线程与应用APP的主线程通信;利用中转模块与配置数据中目标远程服务器的IP和端口创建套接字,根据套接字建立应用APP与目标远程服务器的TCP通信;当终端的位置信息发生变化时,选取与终端的位置信息距离最近的远程服务器作为新的目标远程服务器;建立终端的H5与应用APP的连接协议,根据连接协议建立H5与应用APP通信,以供H5与新的目标远程服务器建立通信;减轻应用APP的主线程处理端口数据的工作负荷及解决H5的复用场景问题。本发明还涉及区块链技术领域,上述中转模块还可以存储于一区块链的节点中。
Description
技术领域
本发明涉及通信测试技术领域,尤其涉及一种移动终端TCP通信方法、装置、设备及存储介质。
背景技术
目前,现有的TCP网络通信在多端口通信场景下,通常将通信层全部运行由应用APP的主线程执行,循环判断各通信端口是否有数据需要处理,这样容易造成终端的应用APP运行性能较低,加上通信层的代码执行异常时,可能会造成终端的应用APP异常甚至崩溃。
此外在终端开发流程中,无论是iOS、安卓端,还是H5的,都是使用已经封装好的网络通信库,开发者只需要开箱即可使用,因为这些网络通信库都是基于各个平台开发,使用不同的程序语言及业务性代码杂糅在一起,所以各个网络通信库难以迁移复用,当各个网络通信库的端口与远程服务器通信时,连接程序都要重写,这样容易占用终端的大量内存,造成终端与用户交互时运行卡顿。
发明内容
鉴于以上内容,本发明提供一种移动终端TCP通信方法、装置、设备及存储介质,其目的在于解决现有技术中应用APP的主线程判断及处理各通信端口的数据,造成终端的应用APP运行性能较低,和H5通信库难以迁移复用的技术问题。
为实现上述目的,本发明提供一种移动终端TCP通信方法,该方法包括:
从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信;
根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信;
实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
优选的,所述从所述终端的预设数据库中读取配置数据,包括:
当所述预设数据库中未存储有所述配置数据时,向配置服务器请求下发所述配置数据并存储至所述预设数据库中;
当所述预设数据库中存储有所述配置数据时,向所述配置服务器查询是否有更新版本的配置数据,当有更新版本的配置数据时,向所述配置服务器请求下发更新版本的配置数据并以所述更新版本的配置数据替换所述预设数据库中存储的配置数据。
优选的,所述开启一个子线程并基于所述子线程创建预设中转模块,包括:
开启一个子线程并基于所述子线程对应的socket pair端口创建所述中转模块,用于临时接收和发送数据。
优选的,所述利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,包括:
根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
创建EPOLL函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
优选的,所述根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信,包括:
当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用APP的主线程读取所述接收缓冲区的数据;
当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用APP的主线程所述发送缓冲区的数据已完成发送。
优选的,所述建立所述终端的H5与所述应用APP的连接协议,包括:
利用所述应用APP与所述终端的H5建立JSBridge通信连接并约定一个伪协议格式。
优选的,所述H5与所述新的目标远程服务器建立通信,包括:
对所述H5发送的请求进行拦截,利用所述应用APP根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用APP与所述新的目标远程服务器通信协定的数据格式后,通过所述JSBridge回调给所述H5;
为实现上述目的,本发明还提供一种移动终端TCP通信装置,所述装置包括:
连接模块:用于从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信;
通信模块:用于根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信;
判断模块:用于实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
响应模块:用于建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
为实现上述目的,本发明还提供一种终端,所述终端包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的程序,所述程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述移动终端TCP通信方法。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有移动终端TCP通信程序,所述移动终端TCP通信程序被处理器执行时,实现如权利要求1至7中任一项所述移动终端TCP通信方法的步骤。
本发明提出的移动终端TCP通信方法、装置、设备及存储介质,根据应用APP的主线程和子线程的架构分层设计,不需要应用APP的主线程轮询各通信端口是否需要读取或写入数据,而子线程创建的中转模块代替应用APP的主线程去判断各通信端口是否需要读取或写入数据,当判断端口的数据达到预设阈值时,通知应用APP的主线程读取数据,实现应用APP的主线程只负责UI和逻辑处理,减轻应用APP的主线程工作负荷,提高终端与用户交互时的流畅体验。
根据H5与应用APP协定的连接协议,H5发送和接收的数据可以沿用由应用APP与目标远程服务器建立的通信程序,从而建立H5与目标远程服务器通信,松轻解决H5的复用场景问题,不需要H5或其它APP的端口与远程服务器连接时重写连接程序,减少过多的程序占用终端的内存空间,提升终端页面流畅的运行。
附图说明
图1为本发明终端较佳实施例的示意图;
图2为图1中移动终端TCP通信装置较佳实施例的模块示意图;
图3为本发明移动终端TCP通信方法较佳实施例的流程图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1所示,为本发明终端1较佳实施例的示意图。
该终端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通话网络等无线或有线网络。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述终端1的内部存储单元,例如该终端1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述终端1的外部存储设备,例如该终端1配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述终端1的内部存储单元也包括其外部存储设备。本实施例中,存储器11通常用于存储安装于所述终端1的操作系统和各类应用软件,例如移动终端TCP通信程序10的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述终端1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行移动终端TCP通信程序10的程序代码等。
显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-EmittingDiode,OLED)触摸器等。显示器13用于显示在终端1中处理的信息以及用于显示可视化的工作界面,例如显示数据统计的结果。
网络接口14可选地可以包括标准的有线接口、无线接口(如WI-FI接口),该网络接口14通常用于在所述终端1与其它终端之间建立通信连接。
图1仅示出了具有组件11-14以及移动终端TCP通信程序10的终端1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,所述终端1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在终端1中处理的信息以及用于显示可视化的用户界面。
该终端1还可以包括射频(Radio Frequency,RF)电路、传感器和音频电路等等,在此不再赘述。
在上述实施例中,处理器12执行存储器11中存储的移动终端TCP通信程序10时可以实现如下步骤:
从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信;
根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信;
实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
所述存储设备可以为终端1的存储器11,也可以为与终端1通讯连接的其它存储设备。
关于上述步骤的详细介绍,请参照下述图2关于移动终端TCP通信装置100实施例的功能模块图以及图3关于移动终端TCP通信方法实施例的流程图的说明。
参照图2所示,为本发明移动终端TCP通信装置100的功能模块图。
本发明所述移动终端TCP通信装置100可以安装于终端中。根据实现的功能,所述移动终端TCP通信装置100可以包括连接模块110、通信模块120、判断模块130及响应模块140。本发明所述模块也可以称之为单元,是指一种能够被终端处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在终端的存储器中。
在本实施例中,关于各模块/单元的功能如下:
连接模块110,用于从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信。
本实施例中,当用户通过手机等自助终端设备向配置服务器发出请求配置数据,终端的应用APP获取配置服务器下发的配置数据,应用APP是基于终端的本地操作系统的第三方应用程序,例如,IOS、Android、WP并使用原生程式编写运行的第三方应用程序,也叫本地APP、原生APP或Native APP,终端的应用APP从预设的数据库中读取该配置数据,预设的数据库可以为本地数据库、本地存储硬盘、外部数据库,同时,终端的应用APP单独开启一个子线程,并基于该子线程建立一个预设中转模块,中转模块用于临时接收和发送数据,根据该中转模块建立该子线程与所述终端的一个应用APP的主线程之间通信。
在一个实施例中,从所述终端的预设数据库中读取配置数据,包括:
当所述预设数据库中未存储有所述配置数据时,向配置服务器请求下发所述配置数据并存储至所述预设数据库中;
当所述预设数据库中存储有所述配置数据时,向所述配置服务器查询是否有更新版本的配置数据,当有更新版本的配置数据时,向所述配置服务器请求下发更新版本的配置数据并以所述更新版本的配置数据替换所述预设数据库中存储的配置数据。
当终端的应用APP启动时,检查本地数据库中是否存储有配置数据,如果本地数据库中没有配置数据时,终端的应用APP向配置服务器发出请求,获取配置服务器下发的配置数据存储至本地数据库中。
当终端的应用APP下次启动时,如果本地数据库中已经存储有该配置数据时,终端的应用APP根据该配置数据的版本号,向配置服务器请求该配置数据的更新版本,如果有更新版本的配置数据,将该更新版本的配置数据存储至本地数据库中;如果没有更新版本,终端的应用APP直接启用该配置数据。
在一个实施例中,开启一个子线程并基于所述子线程创建预设中转模块,包括:
开启一个子线程并基于所述子线程对应的socket pair端口创建所述中转模块,用于临时接收和发送数据。
终端的应用APP单独开启一个子线程,并基于该子线程对应的socket pair端口创建临时接收和发送数据的中转模块,同时,终端的应用APP利用该子线程对应的socketpair端口创建回环IP地址的绑定关系,根据该中转模块建立该子线程与终端的一个应用APP的主线程之间通信。
例如,终端的应用APP获取配置服务器下发的配置数据后,将配置数据至本地数据库中,获取的配置数据为一个列表,列表中包含了配置数据版本号、所有远程服务器的IP、端口号、远程服务器所在位置、通信服务类型,同时,应用APP单独开启一个子线程,并基于该子线程创建一个中转模块,该中转模块根据回环地址与固定端口号构造一对socketpair,该子线程连接socket pair的一个端口,应用APP的主线程连接socket pair的另一个端口,通过socket pair的两个端口建立子线程与所述终端的一个应用APP的主线程之间通信。
相对于现有技术,本发明根据应用APP的主线程和子线程的架构分层设计,不需要应用APP的主线程轮询各通信端口是否需要读取或写入数据,而子线程创建的中转模块代替应用APP的主线程去判断各通信端口是否需要读取或写入数据,实现应用APP的主线程只负责UI和逻辑处理,减轻应用APP的主线程工作负荷,提高终端与用户交互时的流畅体验。
通信模块120,用于根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信。
本实施例中,根据手机等自助终端设备当前的位置信息,位置信息包括但不限于为移动网络基站信息、手机的坐标信息,由于配置数据具有每个远程服务器的IP和端口,根据终端当前的位置信息距离最近的远程服务器作为目标远程服务器,同时,终端的中转模块与该目标远程服务器的IP和端口创建预设数量的套接字,套接字是指对通信中不同终端上的应用进程之间进行双向通信的端点的抽象,也叫socket,预设数量是根据终端使用场景的需要来设定,终端的中转模块根据每个套接字建立应用APP与目标远程服务器之间的TCP通信。
例如,根据手机等自助终端设备当前的位置信息,终端的应用APP利用中转模块与终端当前的位置信息距离最近的远程服务器创建多个套接字,应用APP根据每个套接字与远程服务器建立TCP通信,套接字的数量是根据终端使用场景的需要,若当前终端运行的一个APP内有多种不同类型的数据需要在不同的链路上独立发送、接收处理,比如:邮件数据、IM数据需要在2条不同的数据链路上发送接收,则在该APP内可以与远程服务器创建2个套接字通信。
在一个实施例中,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,包括:
根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
创建EPOLL函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
终端的中转模块为每个套接字创建初始化的用户缓冲区,用户缓冲区包括发送缓冲区和接收缓冲区,发送缓冲区用于将发送给远程服务器的数据从用户空间拷贝至内核空间,接收缓冲区用于接受从远程服务器发送的数据从内核空间拷贝至用户空间。
例如,初始化后的发送缓冲区和接收缓冲区的空间值范围为(0-4096Byte),同时,中转模块根据实际监测的场景需要分别设置,设置接收缓冲区的预设阈值作为第一预设阈值,设置发送缓冲区的预设阈值作为第二预设阈值,每次将数据写入发送缓冲区或从接收缓冲区读取数据,中转模块会绑定该数据的回调函数,当发送缓冲区数据写入内核或数据读取至接收缓冲区时触发该回调函数,确定发送缓冲区或接收缓冲区的容量值是否达到对应的预设阈值。
终端建立EPOLL函数的抽象文件对象拷贝至内核中,抽象文件对象包含了文件描述符、索引树、就绪列表、等待队列等,抽象文件对象将每个套接字插入索引树中,在内核中注册套接字的事件并监测套接字的事件,监测的事件包括套接字的读数据事件和写数据事件,EPOLL函数能够高效的管理每个套接字,确保终端的应用APP与目标远程服务器之间稳定通信。
例如,抽象文件对象内的索引树会查找内核中任意一个套接字的注册记录,如果有该套接字注册记录,代表该套接字已经被内核监测,如果没有该套接字注册记录,抽象文件对象将该套接字插入索引树中,并将该套接字需要监测的事件注册进内核中进行监测,同时,内核将抽象文件对象拷贝至每个套接字的等待队列上,内核还将终端的进程挂载至抽象文件对象的等待队列上进行睡眠。
在一个实施例中,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信,包括:
当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用APP的主线程读取所述接收缓冲区的数据;
当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用APP的主线程所述发送缓冲区的数据已完成发送。
当内核监测到任意一个套接字有事件触发,中转模块会接收到EPOLL函数的返回值,然后中转模块会根据事件类型将数据写入发送缓冲区或从内核拷贝至接收缓冲区,并触发回调函数,内核在该回调函数内判断该套接字的事件类型:
当内核判断该套接字为读数据事件时,说明该套接字有数据从远程服务器发送到来,中转模块将该套接字在内核内的数据拷贝至接收缓冲区,拷贝进去接收缓冲区的数据可以代表接收缓冲区的第一容量值,例如,拷贝进去的数据为16Byte,那么接收缓冲区的第一容量值为16Byte,接收缓冲区的第一容量值是根据套接字在内核内的数据值的大小决定,中转模块在回调函数中确定接收缓冲区的第一容量值,中转模块并判断第一容量值是否大于或等于第一预设阈值,当判断第一容量值大于或等于第一预设阈值时,中转模块通过该回调函数通知应用APP的主线程读取接收缓冲区的全部数据,例如,第一预设阈值为8Byte,开始时接收缓冲区中的数据是空的,接收到数据后,接收缓冲区的数据会越来越多,当第一容量值超过预设阈值8Byte后,中转模块通过该回调函数通知应用APP的主线程读取接收缓冲区的全部数据。
当内核判断该套接字为写数据事件时,说明有数据从应用APP的主线程写入发送缓冲区内,中转模块将发送缓冲区内的数据写入内核中,写入发送缓冲区的数据可以代表发送缓冲区的第二容量值,例如,写入的数据为16Byte,那么发送缓冲区的第二容量值为16Byte,发送缓冲区的第二容量值是根据应用APP的主线程写入数据值的大小决定,中转模块在回调函数中确定发送缓冲区的第二容量值,中转模块并判断第二容量值是否小于或等于第二预设阈值,当判断第二容量值小于或等于第二预设阈值时,中转模块通过该回调函数通知应用APP的主线程发送缓冲区的数据已完成发送,例如,第二预设阈值时为1Byte,当第二容量值低于1Byte,说明发送缓冲区中的全部数据发送至目标远程服务器,中转模块通过该回调函数通知应用APP的主线程发送缓冲区的数据已完成发送。
相对于现有技术,本发明根据中转模块创建套接字建立了应用APP与目标远程服务器的TCP通信,中转模块代替应用APP的主线程去判断各通信端口是否需要读取或写入数据,当判断端口的数据达到预设阈值时,通知应用APP的主线程读取数据,减轻应用APP的主线程工作负荷,这样可以降低频繁调用应用APP的主线程,能够让应用APP的主线程及时处理终端与用户的交互信息,提高终端的页面流畅运行。
判断模块130,用于实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器。
本实施例中,终端的应用APP实时判断终端的位置信息是否发生变化,当终端所在的移动网络基站信息、坐标信息等其中一个或多个发生变化时,由于配置数据具有每个远程服务器的IP和端口等信息,根据每个远程服务器的IP、端口、远程服务器所在位置、通信服务类型等信息,重新选取与终端的位置信息距离最近的远程服务器的,作为新的目标远程服务器,进行通信从而降低网络的传输延迟。
例如,当手机等自助终端设备从A地方移动到B地方,终端的应用APP判断到终端所在的移动网络基站信息或坐标信息发生变化时,根据配置数据中的所有远程服务器中的IP、端口、远程服务器所在位置、通信服务类型等信息,选取与B地方距离最近的远程服务器进行通信,同时,切换在A地方通信的远程服务器,从而降低网络的传输延迟。
响应模块140,用于建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
本实施例中,建立应用APP与终端的H5的连接协议,连接协议包括:应用APP与终端的H5建立JSBridge通信连接并约定一个伪协议格式,H5是指移动端WEB网页,例如,HTML5、微信网页、移动PPT等,JSBridge是指应用APP和非应用APP之间的桥梁,例如,NativeAPP和非NativeAPP之间通信的通道,而且这个通信的通道是双向的,根据连接协议建立H5与应用APP之间通信,H5的发送和接收的数据由应用APP及中转模块进行转发,建立H5与新的目标远程服务器通信。
在一个实施例中,建立所述终端的H5与所述应用APP的连接协议,包括:
利用所述应用APP与所述终端的H5建立JSBridge通信连接并约定一个伪协议格式。
首先应用APP与终端的H5建立JSBridge通信连接并约定一个伪协议格式,伪协议格式包括:伪协议名称、方法、参数、回调ID,H5根据伪协议建立一个随机数作为回调ID,并根据回调ID构造对应的第一回调函数,H5在页面内按照伪协议动态创建一个iframe节点和src地址来触发调用应用APP的接口。
在一个实施例中,以供所述H5与所述新的目标远程服务器建立通信,包括:
对所述H5发送的请求进行拦截,利用所述应用APP根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用APP与所述新的目标远程服务器通信协定的数据格式后,通过所述JSBridge回调给所述H5。
应用APP对H5的发送请求进行拦截,根据伪协议解析出该请求中的方法名、参数、回调ID,先根据回调ID构造第二回调函数并储存,再根据方法名调用应用APP的接口,将参数在应用APP的接口内转换成对应格式的数据,通过中转模块将该数据发送至新的目标远程服务器。
当中转模块接收到新的目标远程服务器的应答数据,中转模块将应答数据拷贝至接收缓冲区,如果接收缓冲内的第一容量值大于或等于预设阈值,中转模块通知应用APP的主线程读取接收缓冲区的应答数据,基于应用APP与新目标远程服务器通信协定的数据格式,例如,数据格式可以采用JSON数据转换格式,将该应答数据进行转换对应的数据格式,并根据应答数据的回调ID取出对应的第二回调函数,在第二回调函数内将该数据格式通过JSBridge回调给H5。
相对于现有技术,本发明根据H5与应用APP协定的连接协议,H5的发送和接收的数据由应用APP及中转模块进行转发,建立H5与目标远程服务器通信,松轻解决H5的复用场景问题,不需要H5或其它APP的端口与远程服务器连接时重写连接程序,减少过多的程序占用终端的内存空间,提升终端页面流畅的运行。
此外,本发明还提供一种移动终端TCP通信方法。参照图3所示,为本发明移动终端TCP通信方法的实施例的方法流程示意图。终端1的处理器12执行存储器11中存储的移动终端TCP通信程序10时,实现移动终端TCP通信方法,包括步骤S10-S40。以下对各个步骤进行具体说明。
步骤S10:从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信。
本实施例中,当用户通过手机等自助终端设备向配置服务器发出请求配置数据,终端的应用APP获取配置服务器下发的配置数据,应用APP是基于终端的本地操作系统的第三方应用程序,例如,IOS、Android、WP并使用原生程式编写运行的第三方应用程序,也叫本地APP、原生APP或Native APP,终端的应用APP从预设的数据库中读取该配置数据,预设的数据库可以为本地数据库、本地存储硬盘、外部数据库,同时,终端的应用APP单独开启一个子线程,并基于该子线程建立一个预设中转模块,中转模块用于临时接收和发送数据,根据该中转模块建立该子线程与所述终端的一个应用APP的主线程之间通信。
在一个实施例中,从所述终端的预设数据库中读取配置数据,包括:
当所述预设数据库中未存储有所述配置数据时,向配置服务器请求下发所述配置数据并存储至所述预设数据库中;
当所述预设数据库中存储有所述配置数据时,向所述配置服务器查询是否有更新版本的配置数据,当有更新版本的配置数据时,向所述配置服务器请求下发更新版本的配置数据并以所述更新版本的配置数据替换所述预设数据库中存储的配置数据。
当终端的应用APP启动时,检查本地数据库中是否存储有配置数据,如果本地数据库中没有配置数据时,终端的应用APP向配置服务器发出请求,获取配置服务器下发的配置数据存储至本地数据库中。
当终端的应用APP下次启动时,如果本地数据库中已经存储有该配置数据时,终端的应用APP根据该配置数据的版本号,向配置服务器请求该配置数据的更新版本,如果有更新版本的配置数据,将该更新版本的配置数据存储至本地数据库中;如果没有更新版本,终端的应用APP直接启用该配置数据。
在一个实施例中,开启一个子线程并基于所述子线程创建预设中转模块,包括:
开启一个子线程并基于所述子线程对应的socket pair端口创建所述中转模块,用于临时接收和发送数据。
终端的应用APP单独开启一个子线程,并基于该子线程对应的socket pair端口创建临时接收和发送数据的中转模块,同时,终端的应用APP利用该子线程对应的socketpair端口创建回环IP地址的绑定关系,根据该中转模块建立该子线程与所述终端的一个应用APP的主线程之间通信。
终端的应用APP单独开启一个子线程,并基于该子线程对应的socket pair端口创建临时接收和发送数据的中转模块,同时,终端的应用APP利用该子线程对应的socketpair端口创建回环IP地址的绑定关系,根据该中转模块建立该子线程与终端的一个应用APP的主线程之间通信。
相对于现有技术,本发明根据应用APP的主线程和子线程的架构分层设计,不需要应用APP的主线程轮询各通信端口是否需要读取或写入数据,而子线程创建的中转模块代替应用APP的主线程去判断各通信端口是否需要读取或写入数据,实现应用APP的主线程只负责UI和逻辑处理,减轻应用APP的主线程工作负荷,提高终端与用户交互时的流畅体验。
步骤S20:根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信。
本实施例中,根据手机等自助终端设备当前的位置信息,位置信息包括但不限于为移动网络基站信息、手机的坐标信息,由于配置数据具有每个远程服务器的IP和端口,根据终端当前的位置信息距离最近的远程服务器作为目标远程服务器,同时,终端的中转模块与该目标远程服务器的IP和端口创建预设数量的套接字,套接字是指对通信中不同终端上的应用进程之间进行双向通信的端点的抽象,也叫socket,预设数量是根据终端使用场景的需要来设定,终端的中转模块根据每个套接字建立应用APP与目标远程服务器之间的TCP通信。
例如,根据手机等自助终端设备当前的位置信息,终端的应用APP利用中转模块与终端当前的位置信息距离最近的远程服务器创建多个套接字,应用APP根据每个套接字与远程服务器建立TCP通信,套接字的数量是根据终端使用场景的需要,若当前终端运行的一个APP内有多种不同类型的数据需要在不同的链路上独立发送、接收处理,比如:邮件数据、IM数据需要在2条不同的数据链路上发送接收,则在该APP内可以与远程服务器创建2个套接字通信。
在一个实施例中,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,包括:
根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
创建EPOLL函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
终端的中转模块为每个套接字创建初始化的用户缓冲区,用户缓冲区包括发送缓冲区和接收缓冲区,发送缓冲区用于将发送给远程服务器的数据从用户空间拷贝至内核空间,接收缓冲区用于接受从远程服务器发送的数据从内核空间拷贝至用户空间。
例如,初始化后的发送缓冲区和接收缓冲区的空间值范围为(0-4096Byte),同时,中转模块根据实际监测的场景需要分别设置,设置接收缓冲区的预设阈值作为第一预设阈值,设置发送缓冲区的预设阈值作为第二预设阈值,每次将数据写入发送缓冲区或从接收缓冲区读取数据,中转模块会绑定该数据的回调函数,当发送缓冲区数据写入内核或数据读取至接收缓冲区时触发该回调函数,确定发送缓冲区或接收缓冲区的容量值是否达到对应的预设阈值。
终端建立EPOLL函数的抽象文件对象拷贝至内核中,抽象文件对象包含了文件描述符、索引树、就绪列表、等待队列等,抽象文件对象将每个套接字插入索引树中,在内核中注册套接字的事件并监测套接字的事件,监测的事件包括套接字的读数据事件和写数据事件,EPOLL函数能够高效的管理每个套接字,确保终端的应用APP与目标远程服务器之间稳定通信。
例如,抽象文件对象内的索引树会查找内核中任意一个套接字的注册记录,如果有该套接字注册记录,代表该套接字已经被内核监测,如果没有该套接字注册记录,抽象文件对象将该套接字插入索引树中,并将该套接字需要监测的事件注册进内核中进行监测,同时,内核将抽象文件对象拷贝至每个套接字的等待队列上,内核还将终端的进程挂载至抽象文件对象的等待队列上进行睡眠。
在一个实施例中,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信,包括:
当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用APP的主线程读取所述接收缓冲区的数据;
当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用APP的主线程所述发送缓冲区的数据已完成发送。
当内核监测到任意一个套接字有事件触发,中转模块会接收到EPOLL函数的返回值,然后中转模块会根据事件类型将数据写入发送缓冲区或从内核拷贝至接收缓冲区,并触发回调函数,内核在该回调函数内判断该套接字的事件类型:
当内核判断该套接字为读数据事件时,说明该套接字有数据从远程服务器发送到来,中转模块将该套接字在内核内的数据拷贝至接收缓冲区,拷贝进去接收缓冲区的数据可以代表接收缓冲区的第一容量值,例如,拷贝进去的数据为16Byte,那么接收缓冲区的第一容量值为16Byte,接收缓冲区的第一容量值是根据套接字在内核内的数据值的大小决定,中转模块在回调函数中确定接收缓冲区的第一容量值,中转模块并判断第一容量值是否大于或等于第一预设阈值,当判断第一容量值大于或等于第一预设阈值时,中转模块通过该回调函数通知应用APP的主线程读取接收缓冲区的全部数据,例如,第一预设阈值为8Byte,开始时接收缓冲区中的数据是空的,接收到数据后,接收缓冲区的数据会越来越多,当第一容量值超过预设阈值8Byte后,中转模块通过该回调函数通知应用APP的主线程读取接收缓冲区的全部数据。
当内核判断该套接字为写数据事件时,说明有数据从应用APP的主线程写入发送缓冲区内,中转模块将发送缓冲区内的数据写入内核中,写入发送缓冲区的数据可以代表发送缓冲区的第二容量值,例如,写入的数据为16Byte,那么发送缓冲区的第二容量值为16Byte,发送缓冲区的第二容量值是根据应用APP的主线程写入数据值的大小决定,中转模块在回调函数中确定发送缓冲区的第二容量值,中转模块并判断第二容量值是否小于或等于第二预设阈值,当判断第二容量值小于或等于第二预设阈值时,中转模块通过该回调函数通知应用APP的主线程发送缓冲区的数据已完成发送,例如,第二预设阈值时为1Byte,当第二容量值低于1Byte,说明发送缓冲区中的全部数据发送至目标远程服务器,中转模块通过该回调函数通知应用APP的主线程发送缓冲区的数据已完成发送。
相对于现有技术,本发明根据中转模块创建套接字建立了应用APP与目标远程服务器的TCP通信,中转模块代替应用APP的主线程去判断各通信端口是否需要读取或写入数据,当判断端口的数据达到预设阈值时,通知应用APP的主线程读取数据,减轻应用APP的主线程工作负荷,这样可以降低频繁调用应用APP的主线程,能够让应用APP的主线程及时处理终端与用户的交互信息,提高终端的页面流畅运行。
步骤S30:实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器。
本实施例中,终端的应用APP实时判断终端的位置信息是否发生变化,当终端所在的移动网络基站信息、坐标信息等其中一个或多个发生变化时,由于配置数据具有每个远程服务器的IP和端口等信息,根据每个远程服务器的IP、端口、远程服务器所在位置、通信服务类型等信息,重新选取与终端的位置信息距离最近的远程服务器的,作为新的目标远程服务器,进行通信从而降低网络的传输延迟。
例如,当手机等自助终端设备从A地方移动到B地方,终端的应用APP判断到终端所在的移动网络基站信息或坐标信息发生变化时,根据配置数据中的所有远程服务器中的IP、端口、远程服务器所在位置、通信服务类型等信息,选取与B地方距离最近的远程服务器进行通信,同时,切换在A地方通信的远程服务器,从而降低网络的传输延迟。
步骤S40:建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
本实施例中,建立应用APP与终端的H5的连接协议,连接协议包括:应用APP与终端的H5建立JSBridge通信连接并约定一个伪协议格式,H5是指移动端WEB网页,例如,HTML5、微信网页、移动PPT等,JSBridge是指应用APP和非应用APP之间的桥梁,例如,NativeAPP和非NativeAPP之间通信的通道,而且这个通信的通道是双向的,根据连接协议建立H5与应用APP之间通信,H5的发送和接收的数据由应用APP及中转模块进行转发,建立H5与新的目标远程服务器通信。
在一个实施例中,建立所述终端的H5与所述应用APP的连接协议,包括:
利用所述应用APP与所述终端的H5建立JSBridge通信连接并约定一个伪协议格式。
首先应用APP与终端的H5建立JSBridge通信连接并约定一个伪协议格式,伪协议格式包括:伪协议名称、方法、参数、回调ID,H5根据伪协议建立一个随机数作为回调ID,并根据回调ID构造对应的第一回调函数,H5在页面内按照伪协议动态创建一个iframe节点和src地址来触发调用应用APP的接口。
在一个实施例中,以供所述H5与所述新的目标远程服务器建立通信,包括:
对所述H5发送的请求进行拦截,利用所述应用APP根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用APP与所述新的目标远程服务器通信协定的数据格式后,通过所述JSBridge回调给所述H5。
应用APP对H5的发送请求进行拦截,根据伪协议解析出该请求中的方法名、参数、回调ID,先根据回调ID构造第二回调函数并储存,再根据方法名调用应用APP的接口,将参数在应用APP的接口内转换成对应格式的数据,通过中转模块将该数据发送至新的目标远程服务器。
当中转模块接收到新的目标远程服务器的应答数据,中转模块将应答数据拷贝至接收缓冲区,如果接收缓冲内的第一容量值大于或等于预设阈值,中转模块通知应用APP的主线程读取接收缓冲区的应答数据,基于应用APP与新目标远程服务器通信协定的数据格式,例如,数据格式可以采用JSON数据转换格式,将该应答数据进行转换对应的数据格式,并根据应答数据的回调ID取出对应的第二回调函数,在第二回调函数内将该数据格式通过JSBridge回调给H5。
相对于现有技术,本发明根据H5与应用APP协定的连接协议,H5的发送和接收的数据由应用APP及中转模块进行转发,建立H5与目标远程服务器通信,松轻解决H5的复用场景问题,不需要H5或其它APP的端口与远程服务器连接时重写连接程序,减少过多的程序占用终端的内存空间,提升终端页面流畅的运行。
此外,本发明实施例还提出一种计算机可读存储介质,该计算机可读存储介质可以是硬盘、多媒体卡、SD卡、闪存卡、SMC、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有移动终端TCP通信程序10,所述移动终端TCP通信程序10被处理器执行时实现如下操作:
从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信;
根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信;
实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
在另一个实施例中,本发明所提供的移动终端TCP通信方法,为进一步保证上述所有出现的数据的私密和安全性,上述所有数据还可以存储于一区块链的节点中。例如中转模块、配置数据等等,这些数据均可存储在区块链节点中。
需要说明的是,本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本发明之计算机可读存储介质的具体实施方式与上述移动终端TCP通信方法的具体实施方式大致相同,在此不再赘述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,电子装置,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种移动终端TCP通信方法,应用于终端,其特征在于,所述方法包括:
从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信;
根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信;
实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
2.如权利要求1所述的移动终端TCP通信方法,其特征在于,所述从所述终端的预设数据库中读取配置数据,包括:
当所述预设数据库中未存储有所述配置数据时,向配置服务器请求下发所述配置数据并存储至所述预设数据库中;
当所述预设数据库中存储有所述配置数据时,向所述配置服务器查询是否有更新版本的配置数据,当有更新版本的配置数据时,向所述配置服务器请求下发更新版本的配置数据并以所述更新版本的配置数据替换所述预设数据库中存储的配置数据。
3.如权利要求1所述的移动终端TCP通信方法,其特征在于,所述开启一个子线程并基于所述子线程创建预设中转模块,包括:
开启一个子线程并基于所述子线程对应的socket pair端口创建所述中转模块,用于临时接收和发送数据。
4.如权利要求1所述的移动终端TCP通信方法,其特征在于,所述利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,包括:
根据所述中转模块创建每个所述套接字的用户缓冲区,所述用户缓冲区包括发送缓冲区和接收缓冲区;
创建EPOLL函数的抽象文件对象并将所述抽象文件对象存储至所述终端的内核中,将每个所述套接字插入所述抽象文件对象中,并在所述内核中注册所述套接字的事件。
5.如权利要求4所述的移动终端TCP通信方法,其特征在于,所述根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信,包括:
当所述内核监测到任意一个套接字为读数据事件时,根据所述中转模块确定所述接收缓冲区的第一容量值,判断所述第一容量值是否大于或等于第一预设阈值,若是,通知所述应用APP的主线程读取所述接收缓冲区的数据;
当所述内核监测到任意一个套接字为写数据事件时,根据所述中转模块确定所述发送缓冲区的第二容量值,判断所述第二容量值是否小于或等于第二预设阈值,若是,通知所述应用APP的主线程所述发送缓冲区的数据已完成发送。
6.如权利要求1所述的移动终端TCP通信方法,其特征在于,所述建立所述终端的H5与所述应用APP的连接协议,包括:
利用所述应用APP与所述终端的H5建立JSBridge通信连接并约定一个伪协议格式。
7.如权利要求6所述的移动终端TCP通信方法,其特征在于,所述H5与所述新的目标远程服务器建立通信,包括:
对所述H5发送的请求进行拦截,利用所述应用APP根据所述伪协议格式解析出所述请求中的数据,将所述数据通过所述中转模块发送至所述新的目标远程服务器;
接收所述新的目标远程服务器的应答数据,将所述应答数据转换成所述应用APP与所述新的目标远程服务器通信协定的数据格式后,通过所述JSBridge回调给所述H5。
8.一种移动终端TCP通信装置,其特征在于,所述装置包括:
连接模块:用于从所述终端的预设数据库中读取配置数据,开启一个子线程并基于所述子线程创建预设中转模块,根据所述中转模块建立所述子线程与所述终端的一个应用APP的主线程之间通信;
通信模块:用于根据终端当前的位置信息,利用所述中转模块与所述配置数据中目标远程服务器的IP和端口创建预设数量的套接字,根据每个套接字建立所述应用APP与所述目标远程服务器的TCP通信;
判断模块:用于实时判断所述终端的位置信息是否发生变化,当判断所述位置信息发生变化时,根据所述配置数据选取与所述终端的位置信息距离最近的远程服务器作为新的目标远程服务器;
响应模块:用于建立所述终端的H5与所述应用APP的连接协议,根据所述连接协议建立所述H5与所述应用APP之间通信,以供所述H5与所述新的目标远程服务器建立通信。
9.一种终端,其特征在于,所述终端包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的程序,所述程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述移动终端TCP通信方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有移动终端TCP通信程序,所述移动终端TCP通信程序被处理器执行时,实现如权利要求1至7中任一项所述移动终端TCP通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110948755.4A CN113645308B (zh) | 2021-08-18 | 2021-08-18 | 移动终端tcp通信、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110948755.4A CN113645308B (zh) | 2021-08-18 | 2021-08-18 | 移动终端tcp通信、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113645308A true CN113645308A (zh) | 2021-11-12 |
CN113645308B CN113645308B (zh) | 2022-09-16 |
Family
ID=78422707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110948755.4A Active CN113645308B (zh) | 2021-08-18 | 2021-08-18 | 移动终端tcp通信、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113645308B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704659A (zh) * | 2021-09-08 | 2021-11-26 | 杭州默安科技有限公司 | 一种设备终端访问标记方法和系统 |
CN115630248A (zh) * | 2022-12-21 | 2023-01-20 | 深圳高灯计算机科技有限公司 | 页面确定方法、装置、计算机设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106017453A (zh) * | 2016-05-18 | 2016-10-12 | 上海理工大学 | 基于安卓手机的移动物体位置与运动参数远程采集方法 |
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN109474646A (zh) * | 2017-09-07 | 2019-03-15 | 腾讯科技(深圳)有限公司 | 通信连接方法、装置、系统及存储介质 |
WO2019062479A1 (zh) * | 2017-09-29 | 2019-04-04 | 中兴通讯股份有限公司 | 报文处理方法、装置、存储介质及终端 |
CN109660584A (zh) * | 2017-10-12 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种客户端与服务器建立长连接的方法及通信方法与通信系统 |
CN111315038A (zh) * | 2020-02-14 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、电子设备及存储介质 |
CN112671760A (zh) * | 2020-12-22 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于Socket的客户端跨平台网络通信方法及其相关设备 |
-
2021
- 2021-08-18 CN CN202110948755.4A patent/CN113645308B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161537A (zh) * | 2015-04-10 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN106017453A (zh) * | 2016-05-18 | 2016-10-12 | 上海理工大学 | 基于安卓手机的移动物体位置与运动参数远程采集方法 |
CN109474646A (zh) * | 2017-09-07 | 2019-03-15 | 腾讯科技(深圳)有限公司 | 通信连接方法、装置、系统及存储介质 |
WO2019062479A1 (zh) * | 2017-09-29 | 2019-04-04 | 中兴通讯股份有限公司 | 报文处理方法、装置、存储介质及终端 |
CN109660584A (zh) * | 2017-10-12 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种客户端与服务器建立长连接的方法及通信方法与通信系统 |
CN111315038A (zh) * | 2020-02-14 | 2020-06-19 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、电子设备及存储介质 |
CN112671760A (zh) * | 2020-12-22 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于Socket的客户端跨平台网络通信方法及其相关设备 |
Non-Patent Citations (1)
Title |
---|
陈王丰: "基于Linux的高性能网络服务器设计", 《科技资讯》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704659A (zh) * | 2021-09-08 | 2021-11-26 | 杭州默安科技有限公司 | 一种设备终端访问标记方法和系统 |
CN115630248A (zh) * | 2022-12-21 | 2023-01-20 | 深圳高灯计算机科技有限公司 | 页面确定方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113645308B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109547570B (zh) | 服务注册方法、装置、注册中心管理设备及存储介质 | |
CN107438060B (zh) | 一种网络设备中的远程过程调用方法及网络设备 | |
CN113645308B (zh) | 移动终端tcp通信、装置、设备及存储介质 | |
KR102281052B1 (ko) | 이동 단말 애플리케이션 업데이트 방법 및 장치 | |
US11200157B1 (en) | Automated execution reporting for container builds | |
CN109391676B (zh) | 终端设备控制方法、终端设备及计算机可读存储介质 | |
CN114008994B (zh) | 一种代理服务器接收从客户端到网络服务器的请求和与所述请求相对应的从所述网络服务器到所述客户端的响应的方法及系统 | |
CN108762956B (zh) | 获取Native本地数据的方法、服务器、移动终端及存储介质 | |
CN112165482B (zh) | 数据处理方法、装置、计算机设备及介质 | |
CN104821954A (zh) | 一种跨平台远程过程调用方法 | |
CN107391182B (zh) | 一种主题安装包的生成方法、装置、服务器及存储介质 | |
CN107645546B (zh) | 基于安卓系统的文件监听方法、智能设备及存储介质 | |
CN107818023B (zh) | 基于线程的消息处理方法、智能设备及存储介质 | |
CN112416613A (zh) | 一种应用数据处理方法、装置、设备以及介质 | |
CN109831351B (zh) | 链路跟踪方法、装置、终端及存储介质 | |
CN111752770A (zh) | 服务请求的处理方法、系统、计算机设备和存储介质 | |
CN109032693B (zh) | 一种加载展示信息方法、装置、电子设备及可读存储介质 | |
CN113626225A (zh) | 程序调用方法、终端设备及介质 | |
KR102097644B1 (ko) | 보안 요소 내의 패키지를 관리하는 방법 | |
CN107092494B (zh) | 访问apk资源的方法和装置 | |
CN112073488A (zh) | 处理请求的方法及装置 | |
US11262995B2 (en) | Method and apparatus for downloading installation-free application | |
CN108347456B (zh) | 一种应用程序下载方法及装置 | |
CN107688479B (zh) | Android系统网络集群及其搭建的方法、Android系统网络集群数据处理的方法和系统 | |
CN113986621A (zh) | 数据备份性能的优化方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |