CN108777706A - 信息封装方法、装置、计算机设备及存储介质 - Google Patents
信息封装方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN108777706A CN108777706A CN201810478655.8A CN201810478655A CN108777706A CN 108777706 A CN108777706 A CN 108777706A CN 201810478655 A CN201810478655 A CN 201810478655A CN 108777706 A CN108777706 A CN 108777706A
- Authority
- CN
- China
- Prior art keywords
- adb
- socket
- content
- sides
- server
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000005538 encapsulation Methods 0.000 title claims abstract description 57
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 14
- 230000009466 transformation Effects 0.000 claims description 8
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 241001672694 Citrus reticulata Species 0.000 claims description 3
- 230000006870 function Effects 0.000 description 10
- 238000013515 script Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- 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
Abstract
本发明公开了一种信息封装方法、装置、计算机设备及存储介质,其中,该信息封装方法包括:获取SOCKET连接请求,SOCKET连接请求携带有IP地址;将SOCKET连接请求发送给ADB服务端,以使ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道;获取ADB访问内容,将ADB访问内容封装成SOCKET输入流,并将SOCKET输入流通过SOCKET管道发送给ADB服务端;通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容。该信息封装方法可提高ADB客户端的可编程性和易用性,拓展ADB客户端和ADB服务端之间的使用环境和使用场景。
Description
技术领域
本发明涉及信息传输领域,尤其涉及一种信息封装方法、装置、计算机设备及存储介质。
背景技术
ADB(Android Debug Bridge,安卓调试桥)接口的作用主要是让电脑或其它设备通过ADB控制安卓系统的,所以称为“中间桥”。现有ADB客户端(控制端)与ADB服务端(安卓系统)之间进行信息交互受到来自安卓官方的很多限定。比如,信息交互的运行环境只能是Windows、Linux或Mac系统,无法在Android或者其它虚拟系统中进行交互;信息交互的运行环境需要安装安卓官方提供的可执行文件;ADB客户端需要通过ADB SHELL(ADB编程语言)调用DDMLIB(虚拟机调试监控服务中对ADB的功能封装)的JAVA API(ApplicationProgramming Interface,应用程序编程接口)进行通信;而且DDMLIB提供的JAVA API接口较为局限,并未提供所有DDMLIB可提供的功能等。如上所述,现有ADB客户端和ADB服务端之间的信息交互存在多种限制,使得ADB客户端对ADB服务端的可编程性和可扩展性存在限制。
发明内容
本发明实施例提供一种信息封装方法、装置、计算机设备及存储介质,以解决ADB客户端对ADB服务端的可编程性和可扩展性存在限制的问题。
第一方面,本发明实施例提供一种信息封装方法,包括ADB客户端执行的如下步骤:
获取SOCKET连接请求,SOCKET连接请求携带有IP地址;
将SOCKET连接请求发送给ADB服务端,以使ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道;
获取ADB访问内容,将ADB访问内容封装成SOCKET输入流,并将SOCKET输入流通过SOCKET管道发送给ADB服务端;
通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容。
第二方面,本发明实施例提供一种信息封装方法,包括ADB服务端执行的如下步骤:
采用端口监听,获取ADB客户端发送的SOCKET连接请求,SOCKET连接请求携带有IP地址;
基于SOCKET连接请求中的IP地址,创建SOCKET管道;
通过SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流;
对SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。
第三方面,本发明实施例提供一种信息封装装置,包括ADB客户端,其中,ADB客户端包括:
获取连接请求模块,用于获取SOCKET连接请求,SOCKET连接请求携带有IP地址;
第一创建管道模块,用于将SOCKET连接请求发送给ADB服务端,以使ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道;
获取访问内容模块,用于获取ADB访问内容,将ADB访问内容封装成SOCKET输入流,并将SOCKET输入流通过SOCKET管道发送给ADB服务端;
获取回复内容模块,用于通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容。
第四方面,本发明实施例提供一种信息封装装置,包括ADB服务端,其中,ADB服务端包括:
端口监听模块,用于采用端口监听,获取ADB客户端发送的SOCKET连接请求,SOCKET连接请求携带有IP地址;
第二创建管道模块,用于基于SOCKET连接请求中的IP地址,创建SOCKET管道;
获取输入流模块,用于通过SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流;
解封输入流模块,用于对SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。
本发明第五方面提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述信息封装方法的步骤。
本发明第六方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述信息封装方法的步骤。
本发明实施例提供的信息封装方法、装置、计算机设备及存储介质,其中,ADB客户端通过将ADB访问内容封装成SOCKET输入流,通过SOCKET管道发送给ADB服务端;ADB服务端通过将与ADB访问内容相对应的ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。ADB客户端可封装ADB协议中所有的ADB访问内容发送给ADB服务端,而不受格式和开发系统的限制,提高ADB客户端对ADB服务端的可编程性和易用性,拓展ADB客户端和ADB服务端之间的使用环境和使用场景。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1中信息封装方法的一流程图;
图2是本发明实施例1中信息封装方法的另一具体流程图;
图3是本发明实施例1中信息封装方法的另一具体流程图;
图4是本发明实施例1中信息封装方法的另一具体流程图;
图5是本发明实施例1中信息封装方法的另一具体流程图;
图6是本发明实施例2中信息封装装置的一原理框图;
图7是本发明实施例4中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
该信息封装方法包括ADB客户端执行的如下步骤:
获取SOCKET连接请求,SOCKET连接请求携带有IP地址;
将SOCKET连接请求发送给ADB服务端,以使ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道;
获取ADB访问内容,将ADB访问内容封装成SOCKET输入流,并将SOCKET输入流通过SOCKET管道发送给ADB服务端;
通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容。
该信息封装方法还包括ADB服务端执行的如下步骤:
采用端口监听,获取ADB客户端发送的SOCKET连接请求,SOCKET连接请求携带有IP地址;
基于SOCKET连接请求中的IP地址,创建SOCKET管道;
通过SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流;
对SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。
网络上两个端口之间通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个SOCKET。SOCKET通常用来实现客户端和服务端的连接,是TCP/IP协议的一个常用编程界面,一个SOCKET由一个IP地址和一个端口号唯一确定。在Java环境下,SOCKET编程主要是指基于TCP/IP协议的网络编程。
本实施例通过在ADB服务端和ADB客户端之间建立SOCKET管道,用以将ADB客户端发出的ADB访问内容通过SOCKET管道发送给ADB服务端,并接收ADB服务端基于该ADB访问内容的ADB回复内容。其中,ADB客户端指可装载安卓官方开发的ADB客户端软件的终端,比如台式机。ADB服务端指可提供安卓服务环境的终端,比如安卓系统的移动终端。市面可进行JAVA编程的操作系统均可装载本实施例提出的ADB客户端,用以解决ADB客户端对ADB服务端可编程性和可扩展性存在限制的问题。
图1示出本实施例中信息封装方法的一流程图。如图1所示,该信息封装方法包括如下步骤:
S11.ADB客户端获取SOCKET连接请求,SOCKET连接请求携带有IP地址。
其中,SOCKET连接请求是ADB客户端向ADB服务端发起建立SOCKET管道的请求。
本步骤中,ADB客户端可向ADB服务端发起SOCKET连接请求,以和ADB服务端之间建立SOCKET管道来进行信息的传送。具体地,该SOCKET连接请求可以为Connect连接请求,用于创建与ADB服务端通信管道。同时,ADB客户端还将IP地址通过SOCKET连接请求也同时发送给ADB服务端,以使ADB服务端返回连接确认时,可通过ADB客户端的IP地址定位到ADB客户端,举例如下:
Socket client=new Socket("127.0.0.1",5037);//连接IP地址为127.0.0.1的ADB服务端的5037端口。
S12.ADB客户端将SOCKET连接请求发送给ADB服务端,以使ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道。
其中,SOCKET管道相当于连接ADB客户端和ADB服务端之间的一根管道,用以收发SOCKET输入流和SOCKET输出流。
本步骤中,ADB客户端将SOCKET连接请求发送给ADB服务端,该ADB服务端在基于SOCKETl连接请求所携带的IP地址进行监听验证后,可以向ADB客户端发回Accept接收消息,以便基于该Accept接收消息建立一个SOCKET管道,以便于在该SOCKET管道中传输SOCKET输入流和SOCKET输出流,实现ADB客户端和ADB服务端通信。
S13.ADB服务端采用端口监听,获取ADB客户端发送的SOCKET连接请求,SOCKET连接请求携带有IP地址。
ADB服务端的操作系统中每一个端口提供一种特定服务,只有设置正确的端口,才能获得相应的服务。0-1023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23。为了防止发生冲突端口号一般是设定大于1023的。本实施例中,ADB服务端的端口一般设定5037,用以接收ADB访问内容。
本步骤中,ADB服务端自动监听端口,可及时获取不同ADB客户端发送的访问内容,并且可根据不同SOCKET连接请求中携带的IP地址,对不同ADB客户端返回对应的回复内容。
S14.ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道。
具体地,ADB服务端是依据每一个ADB客户端发送的SOCKET连接请求中的IP地址进行区分,来分别建立与该IP地址相对应的SOCKET管道。ADB服务端指定一个端口作为SOCKET管道的端口,每一端口与一IP地址相对应,以使ADB服务端与发送该SOCKET连接请求的ADB客户端之间创建SOCKET管道,从而传输SOCKET输入流和SOCKET输出流。
S15.ADB客户端获取ADB访问内容,将ADB访问内容封装成SOCKET输入流,并将SOCKET输入流通过SOCKET管道发送给ADB服务端。
其中,ADB访问内容是根据ADB协议封装的已定义的由ADB客户端向ADB服务端提出的业务服务,比如:
host:version请求ADB服务端的内部版本号。作为例外,ADB服务端将用4字节的十六进制字符串回应,返回服务器内部版本号。
host:kill请求ADB服务端立即退出。该ADB访问内容可应用在ADB客户端检测到在升级之后有废弃的ADB服务端仍在运行的情况。
host:emulator:<port>当启动一个新的模拟器时,该请求被发送到ADB服务端。<port>是一个十进制数字代表模拟器的ADB协议端口号,比如:模拟器将自动转发到adbd守护进程的TCP端口号。这个机制使得ADB服务端能够知道新的模拟器实例启动。
host:transport:<serial-number>请求切换连接到<serial-number>指示的设备或模拟器。接到“OKAY”回应之后,ADB客户端发送的所有请求将被直接发送给运行在指定设备上的adbd守护进程。
SOCKET输入流和SOCKET输出流是相对于ADB服务端而言,经SOCKET管道传输的数据流。由SOCKET管道的一端传输数据到管道的另一端,一般使用InputStream和OutputStream分别对输入流和输出流进行包装,比如ADB服务端端接收的SOCKET输入流:
ServerSocket server=new ServerSocket(5037);
该段语句含义为:ADB服务端实时监听5037端口,以接收SOCKET输入流;
InputStream in=socket.getInputStream();//;
该段语句含义为:ADB服务端接收SOCKET输入流携带的信息,将该信息通过生成一个in对象进行保存。
本步骤中,ADB客户端可封装各种ADB访问内容形成SOCKET输入流,封装方式就是将原ADB访问内容的语言格式转换为SOCKET管道可接受的SOCKET输入流的语言格式,因仅涉及语言格式的转换不涉及复杂的流程算法,可快速简单地封装任何ADB访问内容形成SOCKET输入流通过SOCKET管道,扩大了ADB客户端对ADB服务端的可编程性和可扩展性。
S16.ADB服务端通过SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流。
本步骤相对于步骤S15,ADB服务端在SOCKET管道的另一侧接收到ADB客户端发送的SOCKET输入流,以获取SOCKET输出流携带的ADB访问内容。
S17.ADB服务端对SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。
其中,ADB回复内容就是针对ADB访问内容返回的状态答复。比如,ADB客户端的访问内容为host:version请求,用于请求ADB服务端的内部版本号,则ADB服务端将用4字节的十六进制字符串回应作为ADB回复内容,返回服务器内部版本号。
本步骤中,ADB服务端可根据解封出的SOCKET输入流中的ADB访问内容,给出相应的ADB回复内容,可以实现回复所有ADB协议中定义的访问内容,扩展了ADB客户端对ADB服务端的可编程性。
S18.ADB客户端通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容。
其中,ADB客户端对SOCKET输出流进行解封的过程也就是将SOCKET输出流的语音格式转化为ADB客户端可读的语言格式。ADB客户端通过解封SOCKET输出流得到与ADB访问内容相对应的ADB回复内容,也即无缝完成本次和ADB服务端之间的信息交互。
优选地,在SOCKET输出流通过SOCKET管道发送给ADB客户端之后,该信息封装方法还包括:删除SOCKET输入流和SOCKET输出流,并关闭SOCKET管道。每个SOCKET管道都是长连接,十分占用系统资源。如果这个长连接长期闲置,即无数据流的传输,也会占据ADB客户端和ADB客户端之间的系统资源,因此需要关闭这个长连接以节省资源。
本发明实施例提供的信息封装方法中,ADB客户端通过将ADB访问内容封装成SOCKET输入流,通过SOCKET管道发送给ADB服务端;ADB服务端通过将与ADB访问内容相对应的ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。ADB客户端可封装ADB协议中所有的ADB访问内容发送给ADB服务端,而不受格式和开发系统的限制,提高ADB客户端对ADB服务端的可编程性和易用性,拓展ADB客户端和ADB服务端之间的使用环境和使用场景。
在一具体实施方式中,如图2所示,在步骤S15中,也即ADB客户端将ADB访问内容封装成SOCKET输入流,具体包括如下步骤:
S151.ADB客户端采用JAVA算法预置的工具将ADB访问内容转换成JAVA格式的访问内容。
其中,JAVA算法预置的工具包括:ShellUtils.java,也即JAVA开发包预置的ADBSHELL脚本文件。该ADB SHELL脚本文件为用于将JAVA脚本和ADB SHELL脚本进行互换的格式转换工具。脚本替换的语句举例如下:
public static final String COMMAND_EXIT="exit\n";
该段语句含义为将ADB SHELL脚本文件中的“EXIT”转换为JAVA中的“exit”。以此类推,可将所有ADB访问内容替换为JAVA格式的访问内容。
进一步地,ADB客户端通过JAVA虚拟机接收用户输入的以ADB Shell格式发送的ADB访问内容,用以获取ADB服务端的设备信息、APP性能数据和设备截图等信息,对指定APP进行测试或者调试。
本步骤中,通过在ADB客户端采用JAVA算法预置的工具可将所有ADB协议中定义的访问内容转换成JAVA格式的访问内容,以实现ADB协议中定义的访问内容完全可被ADB客户端所调用,提高ADB客户端对于ADB协议中定义的访问内容的利用率。
S152.ADB客户端采用SOCKET输入流创建工具对JAVA格式的访问内容进行封装,得到SOCKET输入流。
其中,SOCKET输入流创建工具就是创建SOCKET输入流的对象,举例说明如下:
InputStream in=client.getInputStream();//创建SOCKET输入流的对象为in,其中对象in是依靠JAVA格式的访问内容预留的API接口包得到的;
Method methods=new exit();//传输的信息内容为退出当前界面的方法,将该方法形成一个methods对象;
in.write(methods);//将methods对象写入in方法,创建SOCKET输入流。本步骤中,SOCKET管道可传输SOCKET输入流并发送给ADB服务端,以获得ADB服务端相应的ADB回复内容。
本实施例中,ADB客户端可将ADB访问内容转换成JAVA格式的访问内容后,进一步再将JAVA格式的访问内容封装为SOCKET输入流,可将所有ADB协议中定义的访问内容转换成JAVA格式的访问内容,扩大了ADB客户端对ADB服务端的可控性。
在一具体实施方式中,如图3所示,在步骤S17中,也即ADB服务端对SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,具体包括如下步骤:
S171.ADB服务端采用SOCKET输入流解析工具对SOCKET输入流进行解封,获取JAVA格式的访问内容。
其中,SOCKET输入流解析工具就是创建SOCKET输入流的解析对象,举例说明如下:
OutputStream out=socket.getInputStream();//创建SOCKET输入流的解析对象为out,其中对象out是依靠调用SOCKET管道预留的API接口包生成的。
String str=out.readLine();//str用于获取创建SOCKET输入流的解析对象为out实际携带的字符串。
本步骤中,通过建立SOCKET输出流的解析对象可解封出JAVA格式的访问内容。
进一步地,ADB服务端是基于安卓系统的,而安卓系统本身就是一个JAVA虚拟机,可以对接收到的JAVA格式的访问内容进行解封,以获取ADB访问内容。
本步骤中,通过ADB服务端部署的JAVA虚拟机可解封出JAVA格式的回复内容进而解析出ADB访问内容。同时JAVA虚拟机是可跨平台安装的,也即可安装JAVA虚拟机的操作系统即可部署该信息封装方法,扩大了ADB客户端和ADB服务端的平台应用性。
S172.ADB服务端采用JAVA算法预置的工具对JAVA格式的访问内容进行转换,获取解封的ADB访问内容。
其中,JAVA算法预置的工具包括:ShellUtils.java,也即JAVA开发包预置的ADBSHELL脚本,用以将JAVA脚本和ADB SHELL脚本进行互换的格式转换工具。脚本替换的语句举例如下:
public static final String exit="COMMAND_EXIT\n";
该段语句含义为将JAVA中的“exit”替换为ADB SHELL编程语言中的“COMMAND_EXIT”。
本步骤可将JAVA格式的回复内容进行转换后获取ADB访问内容,该访问内容是还原成为ADB协议中定义的ADB SHELL格式语言。
S173.ADB服务端基于ADB访问内容生成相对应的ADB回复内容。
可以理解地,本步骤是ADB服务端基于ADB SHELL格式的ADB访问内容,给出相应的ADB SHELL格式的ADB回复内容。比如,ADB客户端通过ADB访问内容向ADB服务端寻求版本号,ADB服务端接收到该ADB访问内容后,将该ADB服务端对应的版本号作为ADB回复内容,以SOCKET输出流的形式返回给ADB客户端。
本实施例中,通过JAVA虚拟机可解封出JAVA格式的访问内容进而解析出ADB访问内容。同时JAVA虚拟机是可跨平台安装的,扩大了ADB客户端和ADB服务端的平台应用性;同时,ADB服务端基于ADB访问内容及时生成相对应的ADB回复内容,提高了ADB客户端和ADB服务端直接的信息互通性。
在一具体实施方式中,如图5所示,在步骤S17中,也即将ADB回复内容封装成SOCKET输出流,具体包括如下步骤:
S174.ADB服务端采用JAVA算法预置的工具将ADB回复内容转换成JAVA格式的回复内容。
类似于另一实施例中的步骤S151,实现思路类似,此处不再赘述。本步骤可将ADB回复内容转换成JAVA格式的回复内容,以进一步形成可供SOCKET管道传输的SOCKET输出流对象。
S175.ADB服务端采用SOCKET输出流创建方法对JAVA格式的回复内容进行封装,获取SOCKET输出流。
类似于另一实施例中的步骤S152,实现思路类似,此处不再赘述。本步骤可将JAVA格式的回复内容进行封装,以形成SOCKET输出流提供给SOCKET管道进行传输。
本实施例通过ADB服务端部署的JAVA虚拟机将ADB回复内容转换成JAVA格式的回复内容,以进一步形成可供SOCKET管道传输的SOCKET输出流对象。因JAVA虚拟机是可跨平台安装的,也即可安装JAVA虚拟机的操作系统即可部署该信息封装方法,扩大了ADB客户端和ADB服务端的平台应用性。
在一具体实施方式中,如图3所示,在步骤S18中,也即ADB客户端通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容,具体包括如下步骤:
S181.ADB客户端采用SOCKET输出流解析方法对SOCKET输出流进行解封,得到JAVA格式的回复内容。
其中,SOCKET输出流解析方法就是创建SOCKET输出流的对象,举例说明如下:
OutputStream out=socket.getOutputStream();//创建SOCKET输出流的对象为out,其中对象out是依靠SOCKET管道预留的API接口包得到的;
OutputStream out=socket.getInputStream();//创建SOCKET输出流的对象为out,其中对象out是依靠调用SOCKET管道预留的API接口包生成的。
String str=out.readLine();//str用于获取创建SOCKET输出流的对象为out实际携带的字符串。
本步骤中,通过建立SOCKET输出流的对象并调用SOCKET管道预留的API接口可读取出SOCKET输出流的对象的内容,进而可解封出JAVA格式的回复内容。
S182.ADB客户端采用JAVA算法预置的工具对JAVA格式的回复内容进行转换,得到与ADB访问内容相对应的ADB回复内容。
类似于另一实施例中的步骤S151,本步骤是步骤S151的逆步骤,实现思路类似,举例说明ADB客户端将JAVA格式的回复内容进行转换的过程:
OutputStream out=client.getOutputStream();//创建SOCKET输出流的对象为out;
byte[]bytes={1,1,1,1,1};//传输的信息内容为占据5个字节的5个1数组,构成bytes对象;
out.write(bytes);//将bytes数组写入out方法,用以形成SOCKET输出流发送给SOCKET;
client.close();//结束SOCKET管道的连接。
上述举例可以看出,ADB客户端提取出5个1的数组的结果。此时,ADB客户端可调用JAVA算法预置的显示工具,将该结果显示到ADB客户端界面上,以使ADB客户端界面上显示与该ADB访问内容相对应的ADB回复内容。
本实施例中,ADB客户端通过SOCKET输出流解析方法使得ADB协议中定义的访问内容完全可被ADB客户端所调用,提高ADB客户端对于ADB协议中定义的访问内容的利用率。
本发明实施例提供的信息封装方法中,ADB客户端通过将ADB访问内容封装成SOCKET输入流,通过SOCKET管道发送给ADB服务端;ADB服务端通过将与ADB访问内容相对应的ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。ADB客户端可封装ADB协议中所有的ADB访问内容发送给ADB服务端,而不受格式和开发系统的限制,提高ADB客户端对ADB服务端的可编程性和易用性,拓展ADB客户端和ADB服务端之间的使用环境和使用场景。
进一步地,ADB客户端可将ADB访问内容转换成JAVA格式的访问内容后,进一步再将JAVA格式的访问内容封装为SOCKET输入流,可将所有ADB协议中定义的访问内容转换成JAVA格式的访问内容,扩大了ADB客户端对ADB服务端的可控性。
再进一步地,通过ADB服务端部署的JAVA虚拟机可解封出JAVA格式的回复内容进而解析出ADB访问内容。同时JAVA虚拟机是可跨平台安装的,也即可安装JAVA虚拟机的操作系统即可部署该信息封装方法,扩大了ADB客户端和ADB服务端的平台应用性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例2
图6示出与实施例1中信息封装方法一一对应的信息封装装置的原理框图。该信息封装装置包括ADB客户端10和ADB服务端20。如图6所示,该ADB客户端10包括获取连接请求模块11、第一创建管道模块12、获取访问内容模块13和获取回复内容模块14。其中,获取连接请求模块11、第一创建管道模块12、获取访问内容模块13和获取回复内容模块14的实现功能与实施例中信息封装方法对应的步骤S11、S12、S15和S18分别对应,为避免赘述,本实施例不一一详述。
获取连接请求模块11,用于获取SOCKET连接请求,SOCKET连接请求携带有IP地址。
第一创建管道模块12,用于将SOCKET连接请求发送给ADB服务端,以使ADB服务端基于SOCKET连接请求中的IP地址,创建SOCKET管道。
获取访问内容模块13,用于获取ADB访问内容,将ADB访问内容封装成SOCKET输入流,并将SOCKET输入流通过SOCKET管道发送给ADB服务端。
获取回复内容模块14,用于通过SOCKET管道获取SOCKET输出流,对SOCKET输出流进行解封,得到与ADB访问内容相对应的ADB回复内容。
优选地,如图6所示,该获取访问内容模块13包括访问内容转换单元131和获取输入流单元132。
转换访问内容单元131,用于采用JAVA算法预置的工具将ADB访问内容转换成JAVA格式的访问内容。
获取输入流单元132,用于采用SOCKET输入流创建工具对JAVA格式的访问内容进行封装,得到SOCKET输入流。
优选地,如图6所示,该获取回复内容模块14包括解封输入流单元141和获取回复内容单元142。
解封输入流单元141,用于采用SOCKET输出流创建方法对SOCKET输出流进行解封,得到JAVA格式的回复内容。
获取回复内容单元142,用于采用JAVA算法预置的工具对JAVA格式的回复内容进行转换,得到与ADB访问内容相对应的ADB回复内容。
如图6所示,该ADB服务端20包括端口监听模块21、第二创建管道模块22、获取输入流模块23和解封输入流模块24。其中,端口监听模块21、第二创建管道模块22、获取输入流模块23和解封输入流模块24的实现功能与实施例中信息封装方法对应的步骤S13、S14、S16和S17分别对应,为避免赘述,本实施例不一一详述。
端口监听模块21,用于采用端口监听,获取ADB客户端发送的SOCKET连接请求,SOCKET连接请求携带有IP地址。
第二创建管道模块22,用于基于SOCKET连接请求中的IP地址,创建SOCKET管道。
获取输入流模块23,用于通过SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流。
解封输入流模块24,用于对SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将ADB回复内容封装成SOCKET输出流,并将SOCKET输出流通过SOCKET管道发送给ADB客户端。
优选地,如图6所示,该解封输入流模块24包括输入流解封单元241、回复内容转换单元242和回复内容生成单元243。
解封输入流单元241,用于采用SOCKET输入流解析工具对SOCKET输入流进行解封,获取JAVA格式的访问内容。
转换回复内容单元242,用于采用JAVA算法预置的工具对JAVA格式的访问内容进行转换,获取解封的ADB访问内容。
生成回复内容单元243,用于基于ADB访问内容生成相对应的ADB回复内容。
优选地,如图6所示,该解封输入流模块24包括采用工具单元244和封装输出流单元245。
采用工具单元244,用于采用JAVA算法预置的工具将ADB回复内容转换成JAVA格式的回复内容。
封装输出流单元245,用于采用SOCKET输出流创建方法对JAVA格式的回复内容进行封装,获取SOCKET输出流。
实施例3
本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例1中信息封装方法,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现实施例2中信息封装中各模块的功能,为避免重复,这里不再赘述。
可以理解地,所述一个或多个存储有计算机可读指令的非易失性可读存储介质可以包括:能够携带所述计算机可读指令的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。
实施例4
图7是本发明一实施例提供的计算机设备的示意图。如图7所示,该实施例的计算机设备30包括:处理器31、存储器32以及存储在存储器32中并可在处理器31上运行的计算机程序33。处理器31执行计算机程序33时实现上述实施例1中信息封装方法的步骤,例如图1所示的步骤S11至S18。或者,处理器31执行计算机程序33时实现上述各装置实施例中各模块的功能,例如图6所示ADB客户端10和ADB服务端20的功能。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种信息封装方法,其特征在于,包括ADB客户端执行的如下步骤:
获取SOCKET连接请求,所述SOCKET连接请求携带有IP地址;
将所述SOCKET连接请求发送给ADB服务端,以使所述ADB服务端基于所述SOCKET连接请求中的IP地址,创建SOCKET管道;
获取ADB访问内容,将所述ADB访问内容封装成SOCKET输入流,并将所述SOCKET输入流通过所述SOCKET管道发送给ADB服务端;
通过所述SOCKET管道获取SOCKET输出流,对所述SOCKET输出流进行解封,得到与所述ADB访问内容相对应的ADB回复内容。
2.如权利要求1所述的信息封装方法,其特征在于,所述将所述ADB访问内容封装成SOCKET输入流,包括:
采用JAVA算法预置的工具将所述ADB访问内容转换成JAVA格式的访问内容;
采用SOCKET输入流创建工具对所述JAVA格式的访问内容进行封装,得到SOCKET输入流。
3.如权利要求1所述的信息封装方法,其特征在于,所述对所述SOCKET输出流进行解封,得到与所述ADB访问内容相对应的ADB回复内容,包括:
采用SOCKET输出流解析工具对所述SOCKET输出流进行解封,得到JAVA格式的回复内容;
采用JAVA算法预置的工具对所述JAVA格式的回复内容进行转换,得到与所述ADB访问内容相对应的ADB回复内容。
4.一种信息封装方法,其特征在于,包括ADB服务端执行的如下步骤:
采用端口监听,获取ADB客户端发送的SOCKET连接请求,所述SOCKET连接请求携带有IP地址;
基于所述SOCKET连接请求中的IP地址,创建SOCKET管道;
通过所述SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流;
对所述SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将所述ADB回复内容封装成SOCKET输出流,并将所述SOCKET输出流通过所述SOCKET管道发送给ADB客户端。
5.如权利要求4所述的信息封装方法,其特征在于,所述对所述SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,包括:
采用SOCKET输入流解析工具对所述SOCKET输入流进行解封,获取JAVA格式的访问内容;
采用JAVA算法预置的工具对所述JAVA格式的访问内容进行转换,获取解封的ADB访问内容;
基于所述ADB访问内容生成相对应的ADB回复内容。
6.如权利要求4所述的信息封装方法,其特征在于,所述将所述ADB回复内容封装成SOCKET输出流,包括:
采用JAVA算法预置的工具将所述ADB回复内容转换成JAVA格式的回复内容;
采用SOCKET输出流创建方法对所述JAVA格式的回复内容进行封装,获取SOCKET输出流。
7.一种信息封装装置,其特征在于,包括:ADB客户端,所述ADB客户端包括:
获取连接请求模块,用于获取SOCKET连接请求,所述SOCKET连接请求携带有IP地址;
第一创建管道模块,用于将所述SOCKET连接请求发送给ADB服务端,以使所述ADB服务端基于所述SOCKET连接请求中的IP地址,创建SOCKET管道;
获取访问内容模块,用于获取ADB访问内容,将所述ADB访问内容封装成SOCKET输入流,并将所述SOCKET输入流通过所述SOCKET管道发送给ADB服务端;
获取回复内容模块,用于通过所述SOCKET管道获取SOCKET输出流,对所述SOCKET输出流进行解封,得到与所述ADB访问内容相对应的ADB回复内容。
8.一种信息封装装置,其特征在于,包括:ADB服务端,所述ADB服务端包括:
端口监听模块,用于采用端口监听,获取ADB客户端发送的SOCKET连接请求,所述SOCKET连接请求携带有IP地址;
第二创建管道模块,用于基于所述SOCKET连接请求中的IP地址,创建SOCKET管道;
获取输入流模块,用于通过所述SOCKET管道获取基于ADB访问内容封装而成SOCKET输入流;
解封输入流模块,用于对所述SOCKET输入流进行解封,得到与解封的ADB访问内容相对应的ADB回复内容,将所述ADB回复内容封装成SOCKET输出流,并将所述SOCKET输出流通过所述SOCKET管道发送给ADB客户端。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至3中任一项所述信息封装方法的步骤,或者,所述处理器执行所述计算机程序时实现如权利要求4至6中任一项所述信息封装方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述信息封装方法的步骤,或者,所述计算机程序被处理器执行时实现如权利要求4至6中任一项所述信息封装方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810478655.8A CN108777706A (zh) | 2018-05-18 | 2018-05-18 | 信息封装方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810478655.8A CN108777706A (zh) | 2018-05-18 | 2018-05-18 | 信息封装方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108777706A true CN108777706A (zh) | 2018-11-09 |
Family
ID=64027416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810478655.8A Pending CN108777706A (zh) | 2018-05-18 | 2018-05-18 | 信息封装方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108777706A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917095A (zh) * | 2012-10-10 | 2013-02-06 | 青岛海信移动通信技术股份有限公司 | 一种基于Android系统的终端测试的方法及装置 |
CN105094839A (zh) * | 2015-08-14 | 2015-11-25 | 深圳市众联悠游科技有限公司 | 基于PC机实现运行Android系统应用的方法 |
CN105868109A (zh) * | 2016-03-28 | 2016-08-17 | 北京奇虎科技有限公司 | 一种改进的移动端应用测试方法和系统 |
CN106293734A (zh) * | 2016-08-05 | 2017-01-04 | 佛山绿怡信息科技有限公司 | 检测安卓终端信息的方法及装置 |
CN106487847A (zh) * | 2015-08-28 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及中转服务器 |
CN107483575A (zh) * | 2017-08-10 | 2017-12-15 | 安徽声讯信息技术有限公司 | 一种基于ADB与socket语音文字同步信息控制系统及其方法 |
-
2018
- 2018-05-18 CN CN201810478655.8A patent/CN108777706A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917095A (zh) * | 2012-10-10 | 2013-02-06 | 青岛海信移动通信技术股份有限公司 | 一种基于Android系统的终端测试的方法及装置 |
CN105094839A (zh) * | 2015-08-14 | 2015-11-25 | 深圳市众联悠游科技有限公司 | 基于PC机实现运行Android系统应用的方法 |
CN106487847A (zh) * | 2015-08-28 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及中转服务器 |
CN105868109A (zh) * | 2016-03-28 | 2016-08-17 | 北京奇虎科技有限公司 | 一种改进的移动端应用测试方法和系统 |
CN106293734A (zh) * | 2016-08-05 | 2017-01-04 | 佛山绿怡信息科技有限公司 | 检测安卓终端信息的方法及装置 |
CN107483575A (zh) * | 2017-08-10 | 2017-12-15 | 安徽声讯信息技术有限公司 | 一种基于ADB与socket语音文字同步信息控制系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103178996B (zh) | 分布式包交换芯片模型验证系统及验证方法 | |
CN105068818B (zh) | 生成渠道包的方法、装置与批量生成渠道包的方法、系统 | |
CN104967585B (zh) | 一种远程调试移动终端的方法和装置 | |
US10802955B2 (en) | Test bundling and batching optimizations | |
CN105224753A (zh) | 非能动核电厂多专业设计验证平台 | |
CN112615759B (zh) | 全链路压测组件、全链路压测方法及装置 | |
CN102594618A (zh) | 实现存储局域网络存储设备测试的方法及装置 | |
CN112732231A (zh) | 计算机实现的微服务开发平台的系统和提供微服务的方法 | |
US7469359B2 (en) | Method and apparatus for testing communication software | |
CN109471693A (zh) | 将专有组件映射到跨平台开发系统的方法、介质及设备 | |
CN110187986B (zh) | 一种命令管理方法、系统、装置及计算机可读存储介质 | |
CN106533880A (zh) | 一种在云服务器上搭建vpn服务的方法及装置 | |
Perrotin et al. | TASTE: An open-source tool-chain for embedded system and software development | |
CN113641581A (zh) | 混合模式移动应用调试方法及系统 | |
CN113641582A (zh) | 混合模式移动应用调试方法及系统 | |
CN102905300B (zh) | 基于网络数据的lte仿真测试流程自动生成方法 | |
CN108777706A (zh) | 信息封装方法、装置、计算机设备及存储介质 | |
CN113656152B (zh) | 基于容器云环境的本地模拟方法、系统、介质和电子设备 | |
CN111526028A (zh) | 数据处理方法、装置及设备 | |
CN112867046A (zh) | 一种基于模拟仿真核心网测试upf网元功能的方法 | |
CN100382516C (zh) | 对IPv6主协议进行一致性测试的方法和装置 | |
CN114071467A (zh) | 一种基于4g移动网络模拟环境的靶场系统 | |
CN113626330A (zh) | 混合模式移动应用调试方法及系统 | |
CN113641518A (zh) | 服务调用方法、装置及存储介质 | |
CN109086200B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181109 |