網絡連接管理
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本模塊首批接口從API version 8開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。
導入模塊
import connection from '@ohos.net.connection'
connection.getDefaultNet
getDefaultNet(callback: AsyncCallback): void
獲取默認激活的數據網絡,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<[NetHandle]> | 是 | 回調函數。 |
示例:
connection.getDefaultNet(function (error, netHandle) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(netHandle))
})
connection.getDefaultNet
getDefaultNet(): Promise
獲取默認激活的數據網絡,使用Promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
返回值:
類型 | 說明 |
---|---|
Promise<[NetHandle]> | 以Promise形式返回默認激活的數據網絡。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
console.log(JSON.stringify(netHandle))
})
connection.hasDefaultNet
hasDefaultNet(callback: AsyncCallback): void
檢查默認數據網絡是否被激活,使用callback方式作為異步方法。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback | 是 | 回調函數,默認數據網絡被激活返回true。 |
示例:
connection.hasDefaultNet(function (error, has) {
console.log(JSON.stringify(error))
console.log(has)
})
connection.hasDefaultNet
hasDefaultNet(): Promise
檢查默認數據網絡是否被激活,使用Promise方式作為異步方法。
系統能力 :SystemCapability.Communication.NetManager.Core
返回值:
類型 | 說明 |
---|---|
Promise | 以Promise形式返回,默認數據網絡被激活返回true。 |
示例:
connection.hasDefaultNet().then(function (has) {
console.log(has)
})
connection.getAllNets
getAllNets(callback: AsyncCallback>): void
獲取全部激活的數據網絡列表,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback> | 是 | 回調函數。 |
示例:
connection.getAllNets(function (error, nets) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(nets))
});
connection.getAllNets
getAllNets(): Promise>
獲取全部激活的數據網絡列表,使用promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
返回值:
類型 | 說明 |
---|---|
Promise> | 以Promise形式返回激活的數據網絡列表。 |
示例:
connection.getAllNets().then(function (nets) {
console.log(JSON.stringify(nets))
});
connection.getConnectionProperties
getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback): void
獲取netHandle對應的網絡的連接信息,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄。 |
callback | AsyncCallback<[ConnectionProperties]> | 是 | 回調函數。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.getConnectionProperties(netHandle, function (error, info) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(info))
})
})
connection.getConnectionProperties
getConnectionProperties(netHandle: NetHandle): Promise
獲取netHandle對應的網絡的連接信息,使用Promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄。 |
返回值:
類型 | 說明 |
---|---|
Promise<[ConnectionProperties]> | 以Promise形式返回網絡的連接信息。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.getConnectionProperties(netHandle).then(function (info) {
console.log(JSON.stringify(info))
})
})
connection.getNetCapabilities
getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback): void
獲取netHandle對應的網絡的能力信息,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄。 |
callback | AsyncCallback<[NetCapabilities]> | 是 | 回調函數。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.getNetCapabilities(netHandle, function (error, info) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(info))
})
})
connection.getNetCapabilities
getNetCapabilities(netHandle: NetHandle): Promise
獲取netHandle對應的網絡的能力信息,使用Promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄。 |
返回值:
類型 | 說明 |
---|---|
Promise<[NetCapabilities]> | 以Promise形式返回網絡的能力信息。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.getNetCapabilities(netHandle).then(function (info) {
console.log(JSON.stringify(info))
})
})
connection.reportNetConnected
reportNetConnected(netHandle: NetHandle, callback: AsyncCallback): void
報告網絡狀態已連接,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄,參考[NetHandle]。 |
callback | AsyncCallback | 是 | 回調函數。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.reportNetConnected(netHandle, function (error) {
console.log(JSON.stringify(error))
});
});
connection.reportNetConnected
reportNetConnected(netHandle: NetHandle): Promise
報告網絡狀態已連接,使用promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄,參考[NetHandle]。 |
返回值:
類型 | 說明 |
---|---|
Promise | 以Promise形式返回執行結果。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.reportNetConnected(netHandle).then(function () {
console.log(`report success`)
});
});
connection.reportNetDisconnected
reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback): void
報告網絡狀態已斷開,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄,參考[NetHandle]。 |
callback | AsyncCallback | 是 | 回調函數。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.reportNetDisconnected(netHandle, function (error) {
console.log(JSON.stringify(error))
});
});
connection.reportNetDisconnected
reportNetDisconnected(netHandle: NetHandle): Promise
報告網絡狀態已斷開,使用promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO 和 ohos.permission.INTERNET
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netHandle | [NetHandle] | 是 | 數據網絡的句柄,參考[NetHandle]。 |
返回值:
類型 | 說明 |
---|---|
Promise | 以Promise形式返回執行結果。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
connection.reportNetDisconnected(netHandle).then(function () {
console.log(`report success`)
});
});
connection.getAddressesByName
getAddressesByName(host: string, callback: AsyncCallback>): void
使用默認網絡解析主機名以獲取所有IP地址,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | 需要解析的主機名。 |
callback | AsyncCallback> | 是 | 回調函數。 |
示例:
let host = "xxxx";
connection.getAddressesByName(host, function (error, addresses) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(addresses))
})
connection.getAddressesByName
getAddressesByName(host: string): Promise>
使用默認網絡解析主機名以獲取所有IP地址,使用Promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | 需要解析的主機名。 |
返回值:
類型 | 說明 |
---|---|
Promise> | 以Promise形式返回所有IP地址。 |
示例:
let host = "xxxx";
connection.getAddressesByName(host).then(function (addresses) {
console.log(JSON.stringify(addresses))
})
connection.createNetConnection
createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection
獲取一個netSpecifier指定的網絡的句柄。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
netSpecifier | [NetSpecifier] | 否 | 指定網絡的各項特征,不指定則關注默認網絡。 |
timeout | number | 否 | 獲取netSpecifier指定的網絡時的超時時間,僅netSpecifier存在時生效。 |
返回值:
類型 | 說明 |
---|---|
[NetConnection] | 所關注的網絡的句柄。 |
示例:
// 關注默認網絡
let netConnection = connection.createNetConnection()
// 關注蜂窩網絡
let netConnectionCellular = connection.createNetConnection({
netCapabilities: {
bearerTypes: [NetBearType.BEARER_CELLULAR]
}
})
NetConnection
網絡連接的句柄。
on('netAvailable')
on(type: 'netAvailable', callback: Callback): void
訂閱網絡可用事件。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件,固定為'netAvailable'。 netAvailable:數據網絡可用事件。 |
callback | Callback<[NetHandle]> | 是 | 回調函數。 |
示例:
netConnection.on('netAvailable', function (data) {
console.log(JSON.stringify(data))
})
on('netCapabilitiesChange')
on(type: 'netCapabilitiesChange', callback: Callback<{ netHandle: NetHandle, netCap: NetCapabilities }>): void
訂閱網絡能力變化事件。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件,固定為'netCapabilitiesChange'。 netCapabilitiesChange:網絡能力變化事件。 |
callback | Callback<{ netHandle: [NetHandle], netCap: [NetCapabilities]}> | 是 | 回調函數。 |
示例:
netConnection.on('netCapabilitiesChange', function (data) {
console.log(JSON.stringify(data))
})
on('netConnectionPropertiesChange')
on(type: 'netConnectionPropertiesChange', callback: Callback<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void
訂閱網絡連接信息變化事件。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件,固定為'netConnectionPropertiesChange'。 netConnectionPropertiesChange:網絡連接信息變化事件。 |
callback | Callback<{ netHandle: [NetHandle], connectionProperties: [ConnectionProperties]}> | 是 | 回調函數。 |
示例:
netConnection.on('netConnectionPropertiesChange', function (data) {
console.log(JSON.stringify(data))
})
on('netBlockStatusChange')
on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, blocked: boolean }>): void
訂閱網絡阻塞狀態事件,使用callback方式作為異步方法。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件,固定為'netBlockStatusChange'。 netBlockStatusChange:網絡阻塞狀態事件。 |
callback | Callback<{ netHandle: [NetHandle], blocked: boolean }> | 是 | 回調函數。 |
示例:
netConnection.on('netBlockStatusChange', function (data) {
console.log(JSON.stringify(data))
})
on('netLost')
on(type: 'netLost', callback: Callback): void
訂閱網絡丟失事件。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件,固定為'netLost'。 netLost:網絡嚴重中斷或正常斷開事件。 |
callback | Callback<[NetHandle]> | 是 | 回調函數。 |
示例:
let netConnection1 = connection.createNetConnection()
netConnection1.on('netLost', function (data) {
console.log(JSON.stringify(data))
})
on('netUnavailable')
on(type: 'netUnavailable', callback: Callback): void
訂閱網絡不可用事件。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件,固定為'netUnavailable'。 netUnavailable:網絡不可用事件。 |
callback | Callback | 是 | 回調函數。 |
示例:
netConnection.on('netUnavailable', function (data) {
console.log(JSON.stringify(data))
})
register
register(callback: AsyncCallback): void
訂閱指定網絡狀態變化的通知。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback | 是 | 回調函數。 |
示例:
netConnection.register(function (error) {
console.log(JSON.stringify(error))
})
unregister
unregister(callback: AsyncCallback): void
取消訂閱默認網絡狀態變化的通知。
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback | 是 | 回調函數。 |
示例:
netConnection.unregister(function (error) {
console.log(JSON.stringify(error))
})
NetHandle
數據網絡的句柄。
在調用NetHandle的方法之前,需要先獲取NetHandle對象。
系統能力 :SystemCapability.Communication.NetManager.Core
屬性
參數名 | 類型 | 說明 |
---|---|---|
netId | number | 網絡ID,必須大于等于100。 |
getAddressesByName
getAddressesByName(host: string, callback: AsyncCallback>): void
使用對應網絡解析主機名以獲取所有IP地址,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | 需要解析的主機名。 |
callback | AsyncCallback> | 是 | 回調函數 |
示例:
connection.getDefaultNet().then(function (netHandle) {
let host = "xxxx";
netHandle.getAddressesByName(host, function (error, addresses) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(addresses))
})
})
getAddressesByName
getAddressesByName(host: string): Promise>
使用對應網絡解析主機名以獲取所有IP地址,使用Promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | 需要解析的主機名。 |
返回值:
類型 | 說明 |
---|---|
Promise> | 以Promise形式返回所有IP地址。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
let host = "xxxx";
netHandle.getAddressesByName(host).then(function (addresses) {
console.log(JSON.stringify(addresses))
})
})
getAddressByName
getAddressByName(host: string, callback: AsyncCallback): void
使用對應網絡解析主機名以獲取第一個IP地址,使用callback方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | 需要解析的主機名。 |
callback | AsyncCallback<[NetAddress]> | 是 | 回調函數。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
let host = "xxxx";
netHandle.getAddressByName(host, function (error, address) {
console.log(JSON.stringify(error))
console.log(JSON.stringify(address))
})
})
getAddressByName
getAddressByName(host: string): Promise
使用對應網絡解析主機名以獲取第一個IP地址,使用Promise方式作為異步方法。
需要權限 :ohos.permission.GET_NETWORK_INFO
系統能力 :SystemCapability.Communication.NetManager.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
host | string | 是 | 需要解析的主機名。 |
返回值:
類型 | 說明 |
---|---|
Promise<[NetAddress]> | 以Promise形式返回第一個IP地址。 |
示例:
connection.getDefaultNet().then(function (netHandle) {
let host = "xxxx";
netHandle.getAddressByName(host).then(function (address) {
console.log(JSON.stringify(address))
})
})
NetSpecifier
提供承載數據網絡能力的實例。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 類型 | 說明 |
---|---|---|
netCapabilities | [NetCapabilities] | 存儲數據網絡的傳輸能力和承載類型。 |
bearerPrivateIdentifier | string | 網絡標識符,WIFI網絡的標識符是"wifi",蜂窩網絡的標識符是"slot0"(對應SIM卡1)。 |
NetCapabilities
網絡的能力集。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 類型 | 說明 |
---|---|---|
linkUpBandwidthKbps | number | 上行(設備到網絡)帶寬。 |
linkDownBandwidthKbps | number | 下行(網絡到設備)帶寬。 |
networkCap | Array<[NetCap]> | 網絡具體能力。 |
bearerTypes | Array<[NetBearType]> | 網絡類型。 |
NetCap
網絡具體能力。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 值 | 說明 |
---|---|---|
NET_CAPABILITY_MMS | 0 | 表示網絡可以訪問運營商的MMSC(Multimedia Message Service,多媒體短信服務)發送和接收彩信。 |
NET_CAPABILITY_NOT_METERED | 11 | 表示網絡流量未被計費。 |
NET_CAPABILITY_INTERNET | 12 | 網絡可以訪問Internet。 |
NET_CAPABILITY_NOT_VPN | 15 | 表示網絡不使用VPN(Virtual Private Network,虛擬專用網絡)。 |
NET_CAPABILITY_VALIDATED | 16 | 網絡可用。 |
NetBearType
網絡類型。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
名稱 | 值 | 說明 |
---|---|---|
BEARER_CELLULAR | 0 | 蜂窩網絡。 |
BEARER_WIFI | 1 | Wi-Fi網絡。 |
BEARER_ETHERNET | 3 | 以太網網絡。 |
ConnectionProperties
網絡連接信息。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 類型 | 說明 |
---|---|---|
interfaceName | string | 網卡名稱。 |
domains | string | 所屬域,默認""。 |
linkAddresses | Array<[LinkAddress]> | 鏈路信息。 |
routes | Array<[RouteInfo]> | 路由信息。 |
dnses | Array<[NetAddress]> | 網絡地址,參考[NetAddress]。 |
mtu | number | 最大傳輸單元。 |
LinkAddress
網絡鏈路信息。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 類型 | 說明 |
---|---|---|
address | [NetAddress] | 鏈路地址。 |
prefixLength | number | 鏈路地址前綴的長度。 |
RouteInfo
網絡路由信息。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 類型 | 說明 |
---|---|---|
interface | string | 網卡名稱。 |
destination | [LinkAddress] | 目的地址。 |
gateway | [NetAddress] | 網關地址。 |
hasGateway | boolean | 是否有網關。 |
isDefaultRoute | booleanHarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | 是否為默認路由。 |
NetAddress
網絡地址。
系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetManager.Core。
參數名 | 類型 | 說明 |
---|---|---|
address | string | 地址。 |
family | number | IPv4 = 1,IPv6 = 2,默認IPv4。 |
port | number | 端口,取值范圍[0, 65535]。 |
審核編輯 黃宇
-
網絡管理
+關注
關注
0文章
118瀏覽量
27656 -
鴻蒙
+關注
關注
57文章
2313瀏覽量
42748
發布評論請先 登錄
相關推薦
評論