HarmonyOS学习路之开发篇—网络与连接(网络管理)

本文涉及的产品
数据传输服务 DTS,同步至DuckDB 3个月
简介: 网络管理开发概述HarmonyOS网络管理模块主要提供以下功能:

网络管理开发概述

HarmonyOS网络管理模块主要提供以下功能:


数据连接管理:网卡绑定,打开URL,数据链路参数查询。

数据网络管理:指定数据网络传输,获取数据网络状态变更,数据网络状态查询。

流量统计:获取蜂窝网络、所有网卡、指定应用或指定网卡的数据流量统计值。

HTTP缓存:有效管理HTTP缓存,减少数据流量。

创建本地套接字:实现本机不同进程间的通信,目前只支持流式套接字。

约束与限制

使用网络管理模块的相关功能时,需要请求相应的权限。


image.png

使用当前网络打开一个URL链接

场景介绍

应用使用当前的数据网络打开一个URL链接。

接口说明

应用使用当前网络打开一个URL链接,所使用的接口说明如下。

表1 网络管理功能的主要接口

image.png

开发步骤

调用NetManager.getInstance(Context)获取网络管理的实例对象。

调用NetManager.getDefaultNet()获取默认的数据网络。

调用NetHandle.openConnection()打开一个URL。

通过URL链接实例访问网站。

NetManager netManager = NetManager.getInstance(context);
if (!netManager.hasDefaultNet()) {
    return;
}
NetHandle netHandle = netManager.getDefaultNet();
// 可以获取网络状态的变化
NetStatusCallback callback = new NetStatusCallback() {
    // 重写需要获取的网络状态变化的override函数
};
netManager.addDefaultNetStatusCallback(callback);
// 通过openConnection来获取URLConnection
HttpURLConnection connection = null;
try {
    String urlString = "EXAMPLE_URL"; // 开发者根据实际情况自定义EXAMPLE_URL
    URL url = new URL(urlString);
    URLConnection urlConnection = netHandle.openConnection(url,
                java.net.Proxy.NO_PROXY);
    if (urlConnection instanceof HttpURLConnection) {
        connection = (HttpURLConnection) urlConnection;
        connection.setRequestMethod("GET");
        connection.connect();
        // 之后可进行url的其他操作
    }
} catch(IOException e) {
    HiLog.error(TAG, "exception happened.");
} finally {
    if (connection != null){
        connection.disconnect();
    }
}

使用当前网络进行Socket数据传输

场景介绍

应用使用当前的数据网络进行Socket数据传输。

接口说明

应用使用当前网络进行Socket数据传输,所使用的接口说明如下。

表1 网络管理功能的主要接口

image.png

开发步骤

  1. 1.调用NetManager.getInstance(Context)获取网络管理的实例对象。
  2. 2.调用NetManager.getDefaultNet()获取默认的数据网络。
  3. 3.调用NetHandle.bindSocket()绑定网络。
  4. 4.使用socket发送数据。
NetManager netManager = NetManager.getInstance(context);
if (!netManager.hasDefaultNet()) {
    return;
}
NetHandle netHandle = netManager.getDefaultNet();
// 通过Socket绑定来进行数据传输
DatagramSocket socket = null;
try {
    InetAddress address = netHandle.getByName("www.EXAMPLE.com"); // 开发者根据实际情况自定义EXAMPLE_URL
    socket = new DatagramSocket();
    netHandle.bindSocket(socket);
    byte[] buffer = new byte[1024]; 
    DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, port); // port为连接UDP Socket时自行指定的端口
    // buffer赋值
    // 发送数据
    socket.send(request);
} catch(IOException e) {
    HiLog.error(TAG, "exception happened.");
}finally {
    if (socket != null) {
        socket.close();
    }
}

使用指定网络进行数据访问

场景介绍

应用可以调用API接口来使用指定网络进行数据传输。在进行数据传输前,需要先建立自定义的网络类型。

接口说明

应用使用指定网络进行数据访问,所使用的接口说明如下。

表1 网络管理功能的主要接口

image.png

开发步骤

  1. 1.调用NetSpecifier.Builder()构建指定数据网络的实例。
  2. 2.调用NetManager.setupSpecificNet()建立数据网络,通过callback获取网络状态变化。
  3. 3.进行数据发送。
NetManager netManager = NetManager.getInstance(context);
private class MmsCallback extends NetStatusCallback {
    @Override
    public void onAvailable(NetHandle netHandle) {
        // 通过setAppNet把后续应用所有的请求都通过该网络进行发送
        netManager.setAppNet(netHandle);
        HttpURLConnection connection = null;
        try {
            String urlString = "EXAMPLE_URL"; // 开发者根据实际情况自定义EXAMPLE_URL
            URL url = new URL(urlString);
            URLConnection urlConnection = netHandle.openConnection(url, java.net.Proxy.NO_PROXY);
            if (urlConnection instanceof HttpURLConnection) {
                connection = (HttpURLConnection) urlConnection;
            }
            connection.setRequestMethod("GET");
            connection.connect();
            // 之后可进行url的其他操作
        } finally {
            if(connection != null){
                connection.disconnect();
            }
        }
        // 如果业务执行完毕,可以停止获取
        netManager.removeNetStatusCallback(this);
    }
}
MmsCallback callback = new MmsCallback();
// 配置一个彩信类型的蜂窝网络
NetSpecifier req = new NetSpecifier.Builder()
    .addCapability(NetCapabilities.NET_CAPABILITY_MMS)
    .addBearer(NetCapabilities.BEARER_CELLULAR)
    .build();
// 建立数据网络,通过callback获取网络变更状态
netManager.setupSpecificNet(req, callback);

流量统计

场景介绍

应用通过调用API接口,可以获取蜂窝网络、所有网卡、指定应用或指定网卡的数据流量统计值。

接口说明

应用进行流量统计,所使用的接口主要由DataFlowStatistics提供。

表1 DataFlowStatistics的主要接口

image.png

开发步骤

调用DataFlowStatistics的接口可进行流量统计,以统计指定应用进程的流量为例。

long rx = DataFlowStatistics.getUidRxBytes(uid);
long tx = DataFlowStatistics.getUidTxBytes(uid);
// 进行数据收发
// 统计流量
rx = DataFlowStatistics.getUidRxBytes(uid) - rx;
tx = DataFlowStatistics.getUidTxBytes(uid) - tx;

管理HTTP缓存

场景介绍

应用重复打开一个相同网页时,可以优先从缓存文件里读取内容,从而减少数据流量,降低设备功耗,提升应用性能。


接口说明

管理HTTP缓存的功能主要由HttpResponseCache类提供。


表1 HttpResponseCache的主要接口


image.png

开发步骤

  1. 1.配置缓存目录及最大缓存空间。
  2. 2.保存缓存。
  3. 3.关闭缓存。
// 初始化时设置缓存目录dir及最大缓存空间
HttpResponseCache.install(dir, 10 * 1024 * 1024);
// 访问URL
// 为确保缓存保存到文件系统可以执行flush操作
HttpResponseCache.getInstalled().flush();
// 结束时关闭缓存
HttpResponseCache.getInstalled().close();
相关实践学习
如何在云端创建MySQL数据库
在云计算环境中,数据库服务的迁移和管理是一项关键任务。本场景将为您提供详细的步骤,以指导您在阿里云平台上创建并使用云服务器ECS、云数据库RDS、以及数据传输服务DTS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
6月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
214 0
|
7月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
574 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
504 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
896 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
293 0
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
258 0
|
5月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
246 1
|
5月前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
567 1
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
5月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
274 1

热门文章

最新文章