Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
5d6722c5
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5d6722c5
编写于
7月 05, 2023
作者:
X
xujie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add vpn md
Change-Id: If4a8f87f34e63938ce63b1a216916f9ee8b6dc92 Signed-off-by:
N
xujie
<
xujie223@huawei.com
>
上级
b49b0f3d
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
541 addition
and
0 deletion
+541
-0
zh-cn/application-dev/reference/apis/js-apis-net-vpn.md
zh-cn/application-dev/reference/apis/js-apis-net-vpn.md
+399
-0
zh-cn/application-dev/reference/apis/js-apis-socket.md
zh-cn/application-dev/reference/apis/js-apis-socket.md
+81
-0
zh-cn/application-dev/reference/errorcodes/errorcode-net-vpn.md
...application-dev/reference/errorcodes/errorcode-net-vpn.md
+61
-0
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-net-vpn.md
0 → 100644
浏览文件 @
5d6722c5
# @ohos.net.vpn (VPN管理)
VPN管理模块,支持VPN的启动和停止功能。
> **说明:**
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```
js
import
vpn
from
'
@ohos.net.vpn
'
;
```
## vpn.createVpnConnection<sup>10+</sup>
function createVpnConnection(context: AbilityContext): VpnConnection;
创建一个VPN连接对象。
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ----------------------------- | ---- | ------------------------------------------------------------ |
| context | AbilityContext | 是 | 指定context |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 401 | Parameter error. |
**示例:**
```
js
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
let
context
=
featureAbility
.
getContext
();
VpnConnection
=
vpn
.
createVpnConnection
(
context
);
console
.
info
(
"
vpn onInit:
"
+
JSON
.
stringify
(
VpnConnection
));
```
## VpnConnection.setUp<sup>10+</sup>
setUp(config: VpnConfig, callback: AsyncCallback
\<
number>): void;
使用config创建一个vpn网络,使用callback方式作为异步方法。
**系统接口**
:此接口为系统接口。
**需要权限**
:ohos.permission.MANAGE_VPN
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ----------------------------- | ---- | ------------------------------------------------------------ |
| config |
[
VpnConfig
](
#vpnconfig10
)
| 是 | 指定VPN网络的配置信息。 |
| callback | AsyncCallback
\<
number
\>
| 是 | 回调函数,当成功启动VPN网络时,返回虚拟网卡的tunfd, error为undefined,否则为错误对象。 |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 201 | Permission denied. |
| 202 | Non-system applications use system APIs. |
| 401 | Parameter error. |
| 2200001 | Invalid parameter value. |
| 2200002 | Operation failed. Cannot connect to service. |
| 2100003 | System internal error. |
| 2203001 | VPN creation denied, please check the user type. |
| 2203002 | VPN exist already, please execute destroy first. |
**示例:**
```
js
let
config
=
{
addresses
:
[{
address
:
{
address
:
"
10.0.0.5
"
,
family
:
1
,
},
prefixLength
:
24
,
}],
routes
:
[],
mtu
:
1400
,
dnsAddresses
:[
"
8.8.8.8
"
,
// 114.114.114.114
],
acceptedApplications
:[],
refusedApplications
:[],
}
VpnConnection
.
setUp
(
config
,
(
error
,
data
)
=>
{
console
.
info
(
JSON
.
stringify
(
error
));
console
.
info
(
"
tunfd:
"
+
JSON
.
stringify
(
data
));
})
```
## VpnConnection.setUp<sup>10+</sup>
setUp(config: VpnConfig): Promise
\<
number
\>
;
使用config创建一个vpn网络,使用Promise方式作为异步方法。
**系统接口**
:此接口为系统接口。
**需要权限**
:ohos.permission.MANAGE_VPN
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ----------------------------- | ---- | ------------------------------------------------------------ |
| config |
[
VpnConfig
](
#vpnconfig10
)
| 是 | 指定VPN网络的配置信息。 |
**返回值:**
| 类型 | 说明 |
| --------------------------------- | ------------------------------------- |
| Promise
\<
void> | 以Promise形式返回获取结果,返回指定虚拟网卡的tunfd。 |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 201 | Permission denied. |
| 202 | Non-system applications use system APIs. |
| 401 | Parameter error. |
| 2200001 | Invalid parameter value. |
| 2200002 | Operation failed. Cannot connect to service. |
| 2100003 | System internal error. |
| 2203001 | VPN creation denied, please check the user type. |
| 2203002 | VPN exist already, please execute destroy first. |
**示例:**
```
js
let
config
=
{
addresses
:
[{
address
:
{
address
:
"
10.0.0.5
"
,
family
:
1
,
},
prefixLength
:
24
,
}],
routes
:
[],
mtu
:
1400
,
dnsAddresses
:[
"
8.8.8.8
"
,
// 114.114.114.114
],
acceptedApplications
:[],
refusedApplications
:[],
}
VpnConnection
.
setUp
(
config
).
then
((
data
)
=>
{
console
.
info
(
TAG
+
"
setUp success, tunfd:
"
+
JSON
.
stringify
(
data
))
}).
catch
(
err
=>
{
console
.
info
(
TAG
+
"
setUp fail
"
+
JSON
.
stringify
(
err
))
})
```
## VpnConnection.protect<sup>10+</sup>
protect(socketFd: number, callback: AsyncCallback
\<
void
\>
): void;
保护套接字不受VPN连接。经过保护后,通过此套接字发送的数据将直接进入底层网络,因此其流量不会通过VPN转发,使用callback方式作为异步方法。
**系统接口**
:此接口为系统接口。
**需要权限**
:ohos.permission.MANAGE_VPN
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ----------------------------- | ---- | ------------------------------------------------------------ |
| socketFd | number | 是 | 指定保护的socketfd。 |
| callback | AsyncCallback
\<
void
\>
| 是 | 回调函数,成功时,err为undefined,失败返回错误码错误信息。 |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 201 | Permission denied. |
| 202 | Non-system applications use system APIs. |
| 401 | Parameter error. |
| 2200001 | Invalid parameter value. |
| 2200002 | Operation failed. Cannot connect to service. |
| 2100003 | System internal error. |
| 2203004 | Invalid socket file descriptor. |
**示例:**
```
js
import
socket
from
"
@ohos.net.socket
"
;
var
tcp
=
socket
.
constructTCPSocketInstance
();
let
tunnelfd
=
0
tcp
.
bind
({
address
:
"
0.0.0.0
"
,
family
:
1
,
port
:
0
})
let
connectAddress
=
{
address
:
"
192.168.1.11
"
,
port
:
8888
,
family
:
1
};
tcp
.
connect
({
address
:
connectAddress
,
timeout
:
6000
})
tcp
.
getSocketFd
().
then
((
data
)
=>
{
console
.
info
(
"
tunenlfd:
"
+
data
);
tunnelfd
=
data
})
VpnConnection
.
protect
(
tunnelfd
,
(
error
,
data
)
=>
{
console
.
info
(
JSON
.
stringify
(
error
));
console
.
info
(
JSON
.
stringify
(
data
));
})
```
## VpnConnection.protect<sup>10+</sup>
protect(socketFd: number): Promise
<void>
;
保护套接字不受VPN连接。经过保护后,通过此套接字发送的数据将直接进入底层网络,因此其流量不会通过VPN转发, 使用Promise方式作为异步方法。
**系统接口**
:此接口为系统接口。
**需要权限**
:ohos.permission.MANAGE_VPN
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ----------------------------- | ---- | ------------------------------------------------------------ |
| socketFd | number | 是 | 指定保护的socketfd。 |
**返回值:**
| 类型 | 说明 |
| --------------------------------- | ------------------------------------- |
| Promise
\<
void
\>
| 以Promise形式返回设定结果,失败返回错误码错误信息。 |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 201 | Permission denied. |
| 202 | Non-system applications use system APIs. |
| 401 | Parameter error. |
| 2200001 | Invalid parameter value. |
| 2200002 | Operation failed. Cannot connect to service. |
| 2100003 | System internal error. |
| 2203004 | Invalid socket file descriptor. |
**示例:**
```
js
import
socket
from
"
@ohos.net.socket
"
;
var
tcp
=
socket
.
constructTCPSocketInstance
();
let
tunnelfd
=
0
tcp
.
bind
({
address
:
"
0.0.0.0
"
,
family
:
1
,
port
:
0
})
let
connectAddress
=
{
address
:
"
192.168.1.11
"
,
port
:
8888
,
family
:
1
};
tcp
.
connect
({
address
:
connectAddress
,
timeout
:
6000
})
tcp
.
getSocketFd
().
then
((
data
)
=>
{
console
.
info
(
"
tunenlfd:
"
+
data
);
tunnelfd
=
data
})
VpnConnection
.
protect
(
tunnelfd
).
then
((
data
)
=>
{
console
.
info
(
"
protect success
"
+
JSON
.
stringify
(
data
))
}).
catch
(
err
=>
{
console
.
info
(
"
protect fail
"
+
JSON
.
stringify
(
err
))
})
```
## VpnConnection.destroy<sup>10+</sup>
destroy(callback: AsyncCallback
\<
void
\>
): void;
销毁启动的VPN网络,使用callback方式作为异步方法。
**系统接口**
:此接口为系统接口。
**需要权限**
:ohos.permission.MANAGE_VPN
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ----------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback
\<
void
\>
| 是 | 回调函数,成功时,err为undefined,失败返回错误码错误信息。 |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 201 | Permission denied. |
| 202 | Non-system applications use system APIs. |
| 401 | Parameter error. |
| 2200002 | Operation failed. Cannot connect to service. |
| 2100003 | System internal error. |
**示例:**
```
js
VpnConnection
.
destroy
((
error
,
data
)
=>
{
console
.
info
(
JSON
.
stringify
(
error
));
console
.
info
(
JSON
.
stringify
(
data
));
})
```
## VpnConnection.destroy<sup>10+</sup>
destroy(): Promise
<void>
;
销毁启动的VPN网络,使用Promise方式作为异步方法。
**系统接口**
:此接口为系统接口。
**需要权限**
:ohos.permission.MANAGE_VPN
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
**返回值:**
| 类型 | 说明 |
| --------------------------------- | ------------------------------------- |
| Promise
\<
void
\>
| 以Promise形式返回设定结果,失败返回错误码错误信息。 |
**错误码:**
以下错误码的详细介绍参见
[
VPN错误码
](
../errorcodes/errorcode-net-vpn
)
。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 201 | Permission denied. |
| 202 | Non-system applications use system APIs. |
| 401 | Parameter error. |
| 2200002 | Operation failed. Cannot connect to service. |
| 2100003 | System internal error. |
**示例:**
```
js
VpnConnection
.
destroy
().
then
((
data
)
=>
{
console
.
info
(
"
destroy success
"
+
JSON
.
stringify
(
data
))
}).
catch
(
err
=>
{
console
.
info
(
"
destroy fail
"
+
JSON
.
stringify
(
err
))
});
```
## VpnConfig<sup>10+</sup>
VPN配置参数。
**系统接口**
:此接口为系统接口。
**系统能力**
:SystemCapability.Communication.NetManager.Vpn
| 名称 | 类型 | 必填 | 说明 |
| ------- | ------ | -- |------------------------------ |
| addresses | Array
<LinkAddress>
| 是 | VPN虚拟网卡的IP地址。 |
| routes | Array
<RouteInfo>
| 否 | VPN虚拟网卡的路由信息。 |
| dnsAddresses | Array
<string>
| 否 | DNS服务器地址信息。 |
| searchDomains | Array
<string>
| 否 | DNS的搜索域列表。 |
| mtu | number | 否 | 最大传输单元MTU值(单位:字节)。 |
| isIPv4Accepted | boolean | 否 | 是否支持IPV4, 默认值为true。 |
| isIPv6Accepted | boolean | 否 | 是否支持IPV6, 默认值为flase。 ||
| isLegacy | boolean | 否 | 是否支持内置VPN, 默认值为flase。 |
| isBlocking | boolean | 否 | 是否阻塞模式, 默认值为flase。 |
| trustedApplications | Array
<string>
| 否 | 白名单信息, string类型表示的包名。 |
| blockedApplications | Array
<string>
| 否 | 黑名单信息, string类型表示的包名。 |
zh-cn/application-dev/reference/apis/js-apis-socket.md
浏览文件 @
5d6722c5
...
@@ -1235,6 +1235,87 @@ promise.then(() => {
...
@@ -1235,6 +1235,87 @@ promise.then(() => {
});
});
```
```
### getSocketFd<sup>10+</sup>
getSocketFd(callback: AsyncCallback
\<
number
\>
): void
获取TCPSocket的文件描述符。使用callback方式作为异步方法。
> **说明:**
> bind或connect方法调用成功后,才可调用此方法。
**系统能力**
:SystemCapability.Communication.NetStack
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------ | ---- | ---------- |
| callback | AsyncCallback
\<
number
\>
| 是 | 回调函数,当成功获取fd时,返回tcpsocket的fd。 |
**示例:**
```
js
import
socket
from
"
@ohos.net.socket
"
;
var
tcp
=
socket
.
constructTCPSocketInstance
();
let
tunnelfd
=
0
tcp
.
bind
({
address
:
"
0.0.0.0
"
,
family
:
1
,
})
let
connectAddress
=
{
address
:
"
192.168.1.11
"
,
port
:
8888
,
family
:
1
};
tcp
.
connect
({
address
:
connectAddress
,
timeout
:
6000
})
tcp
.
getSocketFd
((
data
)
=>
{
console
.
info
(
"
tunenlfd:
"
+
data
);
tunnelfd
=
data
})
```
### getSocketFd<sup>10+</sup>
getSocketFd(): Promise
\<
number
\>
获取TCPSocket的文件描述符。使用Promise方式作为异步方法。
> **说明:**
> bind或connect方法调用成功后,才可调用此方法。
**系统能力**
:SystemCapability.Communication.NetStack
**返回值:**
| 类型 | 说明 |
| :----------------------------------------------- | :----------------------------------------- |
| Promise
\<
number
\>
| 以Promise形式返回获取TCPSocket的文件描述符。 |
**示例:**
```
js
import
socket
from
"
@ohos.net.socket
"
;
var
tcp
=
socket
.
constructTCPSocketInstance
();
let
tunnelfd
=
0
tcp
.
bind
({
address
:
"
0.0.0.0
"
,
family
:
1
,
})
let
connectAddress
=
{
address
:
"
192.168.1.11
"
,
port
:
8888
,
family
:
1
};
tcp
.
connect
({
address
:
connectAddress
,
timeout
:
6000
})
tcp
.
getSocketFd
().
then
((
data
)
=>
{
console
.
info
(
"
tunenlfd:
"
+
data
);
tunnelfd
=
data
})
```
### setExtraOptions<sup>7+</sup>
### setExtraOptions<sup>7+</sup>
setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback
\<
void
\>
): void
setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback
\<
void
\>
): void
...
...
zh-cn/application-dev/reference/errorcodes/errorcode-net-vpn.md
0 → 100644
浏览文件 @
5d6722c5
# VPN错误码
> **说明:**
>
> 以下仅介绍本模块特有错误码,通用错误码请参考[通用错误码说明文档](errorcode-universal.md)。
## 2203001 VPN创建失败
**错误信息**
VPN creation denied, please check the user type.
**错误描述**
VPN创建拒绝,请检测当前用户的类型。
**可能原因**
用户的type不匹配, GUEST用户不能调用setUp接口。
**处理步骤**
检查当前用户的类型。
## 2203002 VPN已存在
**错误信息**
VPN exist already, please execute destroy first.
**错误描述**
VPN已经存在,请先执行destory接口。
**可能原因**
VPN已经被创建。
**处理步骤**
先执行destory接口,再调用该接口。
## 2203004 无效描述符
**错误信息**
Invalid socket file descriptor.
**错误描述**
无效的文件描述符。
**可能原因**
tcp链路建立失败。
**处理步骤**
检查tcp链路是否建立成功。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录