网络管理
介绍
此Demo展示如何查询网络详情、域名解析、网络状态监听等功能。
效果预览:
使用说明:
1.启动应用,在点击检查网络、网络详情、网络连接信息后,展示对应的信息;
2.在域名解析的模块下,输入对应的域名后,点击域名解析,展示解析的域名ip地址;
3.在网络监听模块下,开启网络监听后,展示当前监听的网络信息;关闭网络监听后,停止监听网络信息。
具体实现
使用@ohos.net.connection(网络连接管理)接口实现网络的详情、域名解析、网络监听等功能。代码:Index.ets
/*
*
* * Copyright (c) 2023 Huawei Device Co., Ltd.
* * Licensed under the Apache License, Version 2.0 (the 'License');
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an 'AS IS' BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
import { connection } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { CommonConstant as Const } from '../common/Constant';
import { promptAction } from '@kit.ArkUI';
import { Logger } from '../utils/Logger';
@Entry
@Component
struct Index {
@State networkId: string = Const.NETWORK_ID;
@State netMessage: string = Const.INIT_NET_MESSAGE;
@State connectionMessage: string = Const.INIT_CONNECTION_MESSAGE;
@State netStateMessage: string = '';
@State hostName: string = '';
@State ip: string = '';
private controller: TabsController = new TabsController();
private netHandle: connection.NetHandle | null = null;
private netCon: connection.NetConnection | null = null;
scroller: Scroller = new Scroller();
aboutToDisappear(): void {
this.unUseNetworkRegister;
}
build() {
Column() {
Text($r('app.string.network_title'))
.fontSize($r('app.float.title_font_size'))
.fontWeight(FontWeight.Bold)
.textAlign(TextAlign.Start)
.margin({ left: Const.WebConstant_TEN_PERCENT })
.width(Const.WebConstant_FULL_WIDTH)
Tabs({ controller: this.controller }) {
TabContent() {
Column() {
Scroll() {
Column() {
Row() {
Column() {
Text($r('app.string.check_network'))
.fontSize($r('app.float.font_size'))
.padding({ top: $r('app.float.md_padding_margin'), left: $r('app.float.md_padding_margin') })
.fontWeight(FontWeight.Bold)
.align(Alignment.Start)
.width(Const.WebConstant_FULL_WIDTH)
Text(this.networkId)
.fontSize($r('app.float.font_size'))
.padding($r('app.float.md_padding_margin'))
.align(Alignment.Start)
.opacity($r('app.float.opacity'))
.width(Const.WebConstant_FULL_WIDTH)
}
.width(Const.WebConstant_SEVENTY_PERCEN