# NetBoost **Repository Path**: fxyyf1998/NetBoost ## Basic Information - **Project Name**: NetBoost - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-09-19 - **Last Updated**: 2025-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于多网并发能力实现网络加速 ## 项目简介 本示例基于多网并发能力,通过系统返回的多个网络通路,帮助开发者在上传、下载大吞吐场景下实现网络加速的功能。 ## 效果预览 | 下载 | 上传 | |---------------------------------------------------------|----------------------------------------| | | | ## 注意事项 1. 本示例无法直接运行,如需正常使用下载功能,请开发者在[CommonConst.ets](./entry/src/main/ets/common/CommonConst.ets)中配置下载地址**DOWN_URL1**和**DOWN_URL2**,并且这两个地址均需要服务端支持**HEAD**方法及**Range**字段。如需正常使用上传功能,则需要开发者在[CommonConst.ets](./entry/src/main/ets/common/CommonConst.ets)配置上传地址**UP_HOST**,并且确认[FilePartsUploadManager.ets](./entry/src/main/ets/viewmodel/upload/FilePartsUploadManager.ets)中的三个文件上传相关接口是否需要修改。因为文件分段上传通常为私有协议,此处给出示例代码的详解,供开发者理解和修改使用。
1. 第一步,首先会通过初始化方法**initMultiPartUpload**告知服务端初始化,此时传递文件路径和文件名称,如果成功,则会返回指定的**InitiateMultipartUpload**数据格式;
2. 第二步,分段上传文件方法**uploadSegment**,示例代码使用指定的网络,同时搭配第一步返回的初始化结果上传了文件分段的内容,并记录了所有返回的分段结果**UploadPartResult**;
3. 第三步,通知服务端合并文件,此处会上传第二步骤的所有**UploadPartResult**。如果开发者在以上三个步骤中有不同的要求,例如返回的数据格式不同、网络请求的Header不同等问题,请自行修改使用。
2. 打开应用的 "多网络并发传输" 开关,可能会因为各种原因导致打开失败,例如额度用尽、多网并发能力不支持等,开发者可参考[多网并发错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/networkboost-nethandover#section8508131819279)排查。 ## 使用说明 1. 下载本示例代码导入到IDE,打开AppScope->app.json文件,修改bundleName为您自己的应用名称。 2. 参考[ACL的签名配置指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing#section157591551175916) 为第一步对应的bundleName的应用,申请带有"ohos.permission.LINKTURBO"权限的profile文件。 3. 使用IDE的File->Project Structure,找到Singing Configs选项卡,配置应用的签名信息。 4. 找到设备的系统设置->移动网络->网络加速->打开"允许使用移动数据加速网络"开关。 5. 编译安装应用后,"单文件分段上传"页面是可以使用多网络通路,将文件分段上传到云存储的功能,"多文件下载"页面是可以使用多网络通路的能力,同时下载2个文件。 ## 工程目录 ``` ├──entry/src/main/ets │ ├──common │ │ └──CommonConst.ets // 常量类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口类 │ ├──entrybackupability │ │ └──EntryBackupAbility.ets // 备份恢复类 │ ├──net │ │ ├──NetBoostManager.ets // 网络并发管理类 │ │ ├──NetConnectionManager.ets // 网络通路获取 │ │ └──SocketClient.ets // Socket网络请求和下载文件使用 │ ├──pages │ │ ├──DownloadPage.ets // 文件下载页面 │ │ ├──IndexPage.ets // 首页 │ │ └──UploadPage.ets // 单文件分段上传 │ ├──utils │ │ ├──CommonUtils.ets // 常用工具类,例如Toast │ │ ├──FileUtils.ets // 文件工具类 │ │ ├──HttpParser.ets // Http协议解析工具类 │ │ ├──PhotoUtils.ets // 图片工具类 │ │ └──XmlUtils.ets // Xml数据格式解析类 │ ├──viewmodel │ │ ├──download │ │ │ └──FileDownManager.ets // 单文件下载管理类 │ │ └──upload │ │ └──FilePartsUploadManager.ets // 单文件分段上传管理类 │ └──view │ ├──DownloadView.ets // 下载条目信息 │ ├──Titles.ets // 标题信息 │ └──UploadView.ets // 上传条目信息 └──entry/src/main/resources // 应用静态资源目录 ``` ## 具体实现 1. 使用**multiPathStateChange**设置多网状态监听,后续主要是从这里拿到NetHandle多网通路对象。 2. 使用**requestMultiPath**发起多网并发,如果成功发起多网并发,则会触发第一步骤的**multiPathStateChange**回调,可以从该回调拿到NetHandle对象。 3. 通过第二步骤的NetHandle对象的**bindSocket**方法,将Socket绑定到对应的网络。 4. 使用第三步骤绑定指定网络通路的Socket对象访问网络。 5. 由于多网有限额限制,开发者可通过**getMultiPathQuotaStats**获取当前剩余配额信息,并且当不再使用多网通路的时候,建议通过**releaseMultiPath**及时释放多网通路。 ## 相关权限 1. 允许应用使用网络:ohos.permission.INTERNET 2. 允许应用使用网络加速:ohos.permission.LINKTURBO 3. 允许应用获取数据网络信息:ohos.permission.GET_NETWORK_INFO ## 依赖 - 不涉及 ## 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. HarmonyOS系统:HarmonyOS 6.0.0 Beta5及以上。 3. DevEco Studio版本:DevEco Studio 6.0.0 Beta5及以上。 4. HarmonyOS SDK版本:HarmonyOS 6.0.0 Beta5 SDK及以上。