中国总决赛
全球总决赛
学习进度
完成
省赛
√
能力分类
主要子系统
能力模型
网络管理子系统的概念和架构设计,网络支持的能力范围
网络与连接
网络管理
接口函数
使用网络管理模块的相关功能时,需要请求相应的权限。
权限名 | 说明 |
ohos.permission.GET_NETWORK_INFO | 获取网络连接信息。 |
ohos.permission.SET_NETWORK_INFO | 修改网络连接状态。 |
ohos.permission.INTERNET | 允许程序打开网络套接字,进行网络连接。 |
HTTP数据请求@ohos.net.http (考点)
应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
- HTTP数据请求功能主要由http模块提供。
- 使用该功能需要申请ohos.permission.INTERNET权限。
- 导入模块:import http from '@ohos.net.http';
接口名 | 功能描述 |
createHttp() | 创建一个http请求。(不可复用) |
request() | 根据URL地址,发起HTTP网络请求,使用callback/Promise方式作为异步方法。(此接口仅支持数据大小为5M以内的数据接收) |
destroy() | 中断请求任务。 |
on(type: 'headersReceive') | 订阅HTTP Response Header 事件。(可选) |
off(type: 'headersReceive') | 取消订阅HTTP Response Header 事件。 |
once('headersReceive')8+ | 订阅HTTP Response Header 事件,但是只触发一次。 |
request接口开发步骤(考点)
注意下方的红色注释。
- 注意:console.info()输出的数据中包含换行符会导致数据出现截断现象。
WebSocket连接(考点)
- 使用WebSocket建立服务器与客户端的双向连接(即全双工通信),需要先通过createWebSocket()方法创建WebSocket对象,然后通过connect()方法连接到服务器。(考点)
- 当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send()方法与服务器进行通信。
- 当服务器发信息给客户端时,客户端会收到message事件的回调。当客户端不要此连接时,可以通过调用close()方法主动断开连接,之后客户端会收到close事件的回调。
- WebSocket连接功能主要由webSocket模块提供。使用该功能需要申请ohos.permission.INTERNET权限。
Socket连接
Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。
基本概念
- Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。
- TCP:传输控制协议(Transmission Control Protocol)。是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- UDP:用户数据报协议(User Datagram Protocol)。是一个简单的面向消息的传输层,不需要连接。
- TLS:安全传输层协议(Transport Layer Security)。用于在两个通信应用程序之间提供保密性和数据完整性。
场景介绍
应用通过Socket进行数据传输,支持TCP/UDP/TLS协议。主要场景有:
- 应用通过TCP/UDP Socket进行数据传输
- 应用通过TLS Socket进行加密数据传输
IPC与RPC通信(同属于网络与连接部分)
IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信。
- 前者IPC使用Binder驱动,用于设备内的跨进程通信。
- 后者RPC使用软总线驱动,用于跨设备跨进程通信。
- 需要跨进程通信的原因是因为每个进程都有自己独立的资源和内存空间,其他进程不能随意访问不同进程的内存和资源,IPC/RPC便是为了突破这一点。
- IPC和RPC通常采用客户端-服务器(Client-Server)模型,在使用时,请求服务的(Client)一端进程可获取提供服务(Server)一端所在进程的代理(Proxy),并通过此代理读写数据来实现进程间的数据通信。
- 通常,Server会先注册系统能力(System Ability)到系统能力管理者(System Ability Manager,缩写SAMgr)中,SAMgr负责管理这些SA并向Client提供相关的接口。Client要和某个具体的SA通信,必须先从SAMgr中获取该SA的代理,然后使用代理和SA通信。下文直接使用Proxy表示服务请求方,Stub表示服务提供方。
示意图

约束与限制
- 单个设备上跨进程通信时,传输的数据量最大约为1MB,过大的数据量请使用匿名共享内存。
- 不支持在RPC中订阅匿名Stub对象(没有向SAMgr注册Stub对象)的死亡通知。
- 不支持把跨设备的Proxy对象传递回该Proxy对象所指向的Stub对象所在的设备,即指向远端设备Stub的Proxy对象不能在本设备内进行二次跨进程传递。
其他
IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信,包括Proxy和Stub运行在不同设备的情况。
匿名Stub
正向的消亡通知是Proxy感知Stub的状态,若想达到反向的死消亡通知,即Stub感知Proxy的状态,可以巧妙的利用正向消亡通知。如两个进程A(原Stub所在进程)和B(原Proxy所在进程),进程B在获取到进程A的Proxy对象后,在B进程新建一个匿名Stub对象(匿名指未向SAMgr注册),可称之为回调Stub,再通过SendRequest接口将回调Stub传给进程A的原Stub。这样一来,进程A便获取到了进程B的回调Proxy。当进程B消亡或B所在设备离开组网时,回调Stub会消亡,回调Proxy会感知,进而通知给原Stub,便实现了反向消亡通知。
注意:
- 反向死亡通知仅限设备内跨进程通信使用,不可用于跨设备。
- 当匿名Stub对象没有被任何一个Proxy指向的时候,内核会自动回收。
例题
18.[单选题]
以下哪种模块提供了全双工通信协议?
A: HTTP
B: WEBSOCKET
C: HTTPS
D: SOCKET
正确答案:B
答案解析:暂无
- 应用通过 HTTP 发起网络请求,当该请求使用完毕时,调用 destroy 方法主动销毁。
正确
错误
10.[判断题]
使用http模块发起网络请求时,必须要使用on('headersReceive’)订阅请求头,请求才会成功。
A:正确
B:错误
正确答案:B
答案解析:订阅请求头为可选步骤,并非必须。
15.[判断题]
HTTP数据请求功能主要由http模块提供,填写HTTP请求的URL地址,必须带参数,URL地址需要开发者自定义,请求的参数在extraData中指定
A:错误
B:正确
正确答案:A
答案解析:填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定。