HarmonyOS NEXT鸿蒙(开发进阶)基于网络的VPN连接实现

  鸿蒙NEXT开发实战往期必看文章:

一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!

“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)

HarmonyOS NEXT应用开发案例实践总结合(持续更新......)

HarmonyOS NEXT应用开发性能优化实践总结(持续更新......)


VPN全称为虚拟私人网络(Virtual Private Network),是常用于连接中、大型企业或团体间私人网络的通讯方法,利用隧道协议(Tunneling Protocol)来达到发送端认证、消息保密与准确性等功能。

使用过程中外网的用户可以使用 vpn client 连接组织搭建的 vpn server 以建立通信隧道,随后便建立了虚拟的私人网络,处于外网的 worker 和内网中的 server 可以相互通信。

场景一:手机应用配置VPN客户端转发请求到远程VPN服务端访问互联网,实现建立基本VPN服务能力

效果图

启动界面如下图示:

点击'启动vpnExt'按钮,会弹窗提示是否使用vpn权限连接。

方案描述

当前提供三方VPN能力主要用于创建虚拟网卡及配置VPN路由信息,连接隧道过程及内部连接的协议需要应用内部自行实现,创建过程可参考如下:

1、项目中建立VpnAbility.ets文件,继承调用VpnExtensionAbility提供VPN创建、销毁等生命周期能力。

2、ability实现后在entry-module.json5中,添加extensionAbilities相关配置。

3、设置want参数指定的启动目标,启用VPN服务。

核心代码

1、项目中建立VpnAbility.ets文件,继承调用VpnExtensionAbility提供VPN创建、销毁等生命周期能力,参考文档:@ohos.app.ability.VpnExtensionAbility

private VpnConnection: vpnExt.VpnConnection;

onCreate(want: Want) {
  console.info(TAG, `onCreate, want: ${want.abilityName}`);
  this.VpnConnection = vpnExt.createVpnConnection(this.context);
  console.info("createVpnConnection success");
}

onRequest(want: Want, startId: number) {
  console.info(TAG, `onRequest, want: ${want.abilityName}`);
}

onConnect(want: Want) {
  console.info(TAG, `onConnect, want: ${want.abilityName}`);
  return null;
}

onDisconnect(want: Want) {
  console.info(TAG, `onDisconnect, want: ${want.abilityName}`);
}

onDestroy() {
  this.Destroy();
  console.info(TAG, `onDestroy`);
}

Destroy() {
  hilog.info(0x0000, 'developTag', '%{public}s', 'vpn Destroy');
  vp
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值