Dns_case
介绍
应用通过对中文域名进行Punycode转码,实现DNS解析以获取对应的IP地址;使用当前默认网络解析主机名以获取所有IP地址,使用当前默认网络和特定网络连接,指定IP类型解析主机名以获取指定IP地址。
注意: 本示例需使用实际中文域名,才能获得正确结果。
效果预览
| 程序启动 | DNS接口支持配置查询类型 | DNS解析支持中文转码 |
|---|---|---|
![]() |
![]() |
![]() |
使用说明
点击“中文域名解析IP地址”按钮,跳转到“DNS解析支持中文转码”页面
-
前置条件:需要用户将资源文件中“value”对应的值更新为实际的中文域名。
{ "name": "hostName", "value": "中文域名示例" } -
点击 "不转码,获取IP地址" 按钮,获取中文域名对应的IP地址,未转码,获取失败(“host转码结果”为空,“获取IP地址结果”提示错误信息)。
-
点击 "转码,获取IP地址" 按钮,将中文域名转码成Ascii编码并获取IP地址,成功获取中文域名的IP地址(“host转码结果”显示转码后的域名,“获取IP地址结果”显示获取到的IP地址或错误信息)。
-
点击 “将转换为Ascii的host转换回中文域名”按钮,将转码为Ascii编码的域名(即“host转码结果”显示的信息)转成中文域名。
点击“IP地址解析”按钮,跳转到“DNS接口支持配置查询类型”页面
-
前置条件:连接网络,更新DNS.ets文件中的hostName参数为需要被解析的主机名。
-
点击“使用当前默认网络解析主机名获取所有IP地址”按钮,使用当前网络解析主机名,根据“Succeeded to get data”查看日志,返回所有IP地址。
-
点击“使用当前默认网络基于指定IP类型获取IP地址”按钮,使用当前网络,指定IP类型解析主机名,根据“Succeeded to get data”查看日志,返回指定IP地址。
-
点击“使用指定网络基于指定IP类型获取IP地址”按钮,收到网络可用事件回调后,使用当前NetHandle对应的网络解析主机名和指定的IP类型,根据“Succeeded to get data”查看日志,返回指定的IP地址。
工程目录
entry/src/main/ets/
|---common
| |---Logger.ets // 日志工具
|---entryability
| │---EntryAbility.ets
|---entrybackupability
│ |---EntryBackupAbility.ets
|---pages
│ |---Index.ets // 主页
│ |---DNS.ets // DNS接口支持配置查询类型
│ |---Unicode.ets // DNS解析支持中文转码
具体实现
DNS解析支持中文转码
- 中文域名不转码获取IP地址 (
getAddressByName)- 使用
connection.getDefaultNet获取默认激活的数据网络。 - 使用
connection.getAddressesByName使用对应网络解析主机名以获取所有IP地址。
- 使用
- 中文域名转码并获取IP地址 (
getDnsAscii)- 使用
connection.getDefaultNet获取默认激活的数据网络。 - 使用
connection.getDnsAscii将中文域名转换成对应的Ascii编码。 - 使用
connection.getAddressesByName使用对应网络解析主机名以获取所有IP地址。
- 使用
- Ascii编码转Unicode编码(
getDnsUnicode)- 使用
connection.getDnsUnicode将Ascii编码转成Unicode编码。
- 使用
DNS接口支持配置查询类型
- 使用当前网络解析主机名以获取所有IP地址 (
connection.getAddressByName)- 使用
connection.getAddressesByName解析主机名以获取所有IP地址。
- 使用
- 使用当前网络,指定IP类型解析主机名以获取指定IP地址 (
connection.getAddressesByNameWithOptions)- 使用
connection.getAddressesByNameWithOptions解析主机名以获取指定IP地址。
- 使用
- 使用当前NetHandle对应的网络解析主机名和指定的IP类型以获取指定的IP地址(
NetHandle.getAddressesByNameWithOptions)- 使用
NetHandle.getAddressesByNameWithOptions解析主机名以获取指定IP地址。
- 使用
相关权限
ohos.permission.INTERNET
ohos.permission.GET_NETWORK_INFO
依赖
不涉及。
约束与限制
- 本示例仅支持标准系统上运行,支持设备:Phone、PC/2in1、Tablet、TV、Wearable。
- 本示例为Stage模型,支持API23版本SDK,版本号:6.0.0。
- 本示例需要使用DevEco Studio Release(6.0.0.868)及以上版本才可编译运行。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/DocsSample/NetWork_Kit/NetWorkKit_Datatransmission/DNS_case/ > .git/info/sparse-checkout
git remote add origin https://gitcode.com/HarmonyOS_Samples/guide-snippets.git
git pull origin master


