# NetConnection
## Overview
Provides the C APIs of the network connection module for network management.
**Since**: 11
## Summary
### File
| Name| Description|
| -------- | -------- |
| [net_connection.h](net__connection_8h.md) | Provides the C APIs of the network connection module for network management.|
| [net_connection_type.h](net__connection__type_8h.md) | Declares the structs for the C APIs of the network connection module.|
### Structs
| Name| Description|
| -------- | -------- |
| [NetConn_NetHandle](_net_conn___net_handle.md) | Network ID.|
| [NetConn_NetCapabilities](_net_conn___net_capabilities.md) | Network capability set.|
| [NetConn_NetAddr](_net_conn___net_addr.md) | Network address.|
| [NetConn_Route](_net_conn___route.md) | Route configuration.|
| [NetConn_HttpProxy](_net_conn___http_proxy.md) | Proxy configuration information.|
| [NetConn_ConnectionProperties](_net_conn___connection_properties.md) | Network connection information.|
| [NetConn_NetHandleList](_net_conn___net_handle_list.md) | Network list.|
### Macros
| Name| Description|
| -------- | -------- |
| **NETCONN_MAX_NET_SIZE** | 32 |
| **NETCONN_MAX_BEARER_TYPE_SIZE** | 32 |
| **NETCONN_MAX_CAP_SIZE** | 32 |
| **NETCONN_MAX_ADDR_SIZE** | 32 |
| **NETCONN_MAX_ROUTE_SIZE** | 64 |
| **NETCONN_MAX_EXCLUSION_SIZE** | 256 |
| **NETCONN_MAX_STR_LEN** | 256 |
### Types
| Name| Description|
| -------- | -------- |
| [NetConn_NetCap](#netconn_netcap) | Network capability set.|
| [NetConn_NetBearerType](#netconn_netbearertype) | Network carrier type.|
| [NetConn_NetHandle](#netconn_nethandle) | Network ID.|
| [NetConn_NetCapabilities](#netconn_netcapabilities) | Network capability set.|
| [NetConn_NetAddr](#netconn_netaddr) | Network address.|
| [NetConn_Route](#netconn_route) | Route configuration.|
| [NetConn_HttpProxy](#netconn_httpproxy) | Proxy configuration information.|
| [NetConn_ConnectionProperties](#netconn_connectionproperties) | Network connection information.|
| [NetConn_NetHandleList](#netconn_nethandlelist) | Network list.|
| (\*[OH_NetConn_CustomDnsResolver](#oh_netconn_customdnsresolver)) (const char \*host, const char \*serv, const struct addrinfo \*hint, struct addrinfo \*\*res) | Pointer to the custom DNS resolver.|
### Enums
| Name| Description|
| -------- | -------- |
| [NetConn_NetCap](#netconn_netcap) {
NETCONN_NET_CAPABILITY_MMS = 0,
NETCONN_NET_CAPABILITY_NOT_METERED = 11,
NETCONN_NET_CAPABILITY_INTERNET = 12,
NETCONN_NET_CAPABILITY_NOT_VPN = 15,
NETCONN_NET_CAPABILITY_VALIDATED = 16
} | Network capability set.|
| [NetConn_NetBearerType](#netconn_netbearertype) {
NETCONN_BEARER_CELLULAR = 0,
NETCONN_BEARER_WIFI = 1,
NETCONN_BEARER_ETHERNET = 3
} | Network carrier type.|
### Functions
| Name| Description|
| -------- | -------- |
| [OH_NetConn_HasDefaultNet](#oh_netconn_hasdefaultnet) (int32_t \*hasDefaultNet) | Checks whether a default activated data network is available.|
| [OH_NetConn_GetDefaultNet](#oh_netconn_getdefaultnet) ([NetConn_NetHandle](_net_conn___net_handle.md) \*netHandle) | Obtains the default activated data network.|
| [OH_NetConn_IsDefaultNetMetered](#oh_netconn_isdefaultnetmetered) (int32_t \*isMetered) | Checks whether data traffic usage on the current network is metered.|
| [OH_NetConn_GetConnectionProperties](#oh_netconn_getconnectionproperties) ([NetConn_NetHandle](_net_conn___net_handle.md) \*netHandle, [NetConn_ConnectionProperties](_net_conn___connection_properties.md) \*prop) | Obtains the link information of a data network.|
| [OH_NetConn_GetNetCapabilities](#oh_netconn_getnetcapabilities) ([NetConn_NetHandle](_net_conn___net_handle.md) \*netHandle, [NetConn_NetCapabilities](_net_conn___net_capabilities.md) \*netCapacities) | Obtains the capabilities of a data network.|
| [OH_NetConn_GetDefaultHttpProxy](#oh_netconn_getdefaulthttpproxy) ([NetConn_HttpProxy](_net_conn___http_proxy.md) \*httpProxy) | Obtains the default network proxy.|
| [OH_NetConn_GetAddrInfo](#oh_netconn_getaddrinfo) (char \*host, char \*serv, struct addrinfo \*hint, struct addrinfo \*\*res, int32_t netId) | Obtains the DNS result using **netId**.|
| [OH_NetConn_FreeDnsResult](#oh_netconn_freednsresult) (struct addrinfo \*res) | Releases the DNS query result.|
| [OH_NetConn_GetAllNets](#oh_netconn_getallnets) ([NetConn_NetHandleList](_net_conn___net_handle_list.md) \*netHandleList) | Obtains all activated data networks.|
| [OHOS_NetConn_RegisterDnsResolver](#ohos_netconn_registerdnsresolver) ([OH_NetConn_CustomDnsResolver](#oh_netconn_customdnsresolver) resolver) | Registers a custom DNS resolver.|
| [OHOS_NetConn_UnregisterDnsResolver](#ohos_netconn_unregisterdnsresolver) (void) | Unregisters a custom DNS resolver.|
## Type Description
### NetConn_ConnectionProperties
```
typedef struct NetConn_ConnectionPropertiesNetConn_ConnectionProperties
```
**Description**
Network connection information.
**Since**: 11
### NetConn_HttpProxy
```
typedef struct NetConn_HttpProxyNetConn_HttpProxy
```
**Description**
Proxy configuration information.
**Since**: 11
### NetConn_NetAddr
```
typedef struct NetConn_NetAddrNetConn_NetAddr
```
**Description**
Network address.
**Since**: 11
### NetConn_NetBearerType
```
typedef enum NetConn_NetBearerTypeNetConn_NetBearerType
```
**Description**
Network carrier type.
**Since**: 11
### NetConn_NetCap
```
typedef enum NetConn_NetCapNetConn_NetCap
```
**Description**
Network capability set.
**Since**: 11
### NetConn_NetCapabilities
```
typedef struct NetConn_NetCapabilitiesNetConn_NetCapabilities
```
**Description**
Network capability set.
**Since**: 11
### NetConn_NetHandle
```
typedef struct NetConn_NetHandleNetConn_NetHandle
```
**Description**
Network ID.
**Since**: 11
### NetConn_NetHandleList
```
typedef struct NetConn_NetHandleListNetConn_NetHandleList
```
**Description**
Network list.
**Since**: 11
### NetConn_Route
```
typedef struct NetConn_RouteNetConn_Route
```
**Description**
Route configuration.
**Since**: 11
### OH_NetConn_CustomDnsResolver
```
typedef int(* OH_NetConn_CustomDnsResolver) (const char *host, const char *serv, const struct addrinfo *hint, struct addrinfo **res)
```
**Description**
Pointer to the custom DNS resolver.
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| host | Host name.|
| serv | Service name.|
| hint | Pointer to the addrinfo structure.|
| res | DNS query result, which is in the format of linked lists.|
## Enum Description
### NetConn_NetBearerType
```
enum NetConn_NetBearerType
```
**Description**
Network carrier type.
**Since**: 11
| Value| Description|
| -------- | -------- |
| NETCONN_BEARER_CELLULAR | Cellular network.|
| NETCONN_BEARER_WIFI | Wi-Fi.|
| NETCONN_BEARER_ETHERNET | Ethernet.|
### NetConn_NetCap
```
enum NetConn_NetCap
```
**Description**
Network capability set.
**Since**: 11
| Value| Description|
| -------- | -------- |
| NETCONN_NET_CAPABILITY_MMS | MMS.|
| NETCONN_NET_CAPABILITY_NOT_METERED | Non-metered network.|
| NETCONN_NET_CAPABILITY_INTERNET | Internet.|
| NETCONN_NET_CAPABILITY_NOT_VPN | Non-VPN.|
| NETCONN_NET_CAPABILITY_VALIDATED | Verified.|
## Function Description
### OH_NetConn_FreeDnsResult()
```
int32_t OH_NetConn_FreeDnsResult (struct addrinfo * res)
```
**Description**
Releases the DNS query result.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| res | Header of the DNS query result, which is in the format of linked lists.|
**Returns**
**0**: success.
**201**: no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.INTERNET
### OH_NetConn_GetAddrInfo()
```
int32_t OH_NetConn_GetAddrInfo (char * host, char * serv, struct addrinfo * hint, struct addrinfo ** res, int32_t netId )
```
**Description**
Obtains the DNS result using **netId**.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| host | Host name.|
| serv | Service name.|
| hint | Pointer to the addrinfo structure.|
| res | DNS query result, which is in the format of linked lists.|
| netId | If **netId** is set to **0**, the default **netid** is used for query.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.INTERNET
### OH_NetConn_GetAllNets()
```
int32_t OH_NetConn_GetAllNets (NetConn_NetHandleList * netHandleList)
```
**Description**
Obtains all activated data networks.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| netHandleList | Network information list.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.GET_NETWORK_INFO
### OH_NetConn_GetConnectionProperties()
```
int32_t OH_NetConn_GetConnectionProperties (NetConn_NetHandle * netHandle, NetConn_ConnectionProperties * prop )
```
**Description**
Obtains the link information of a data network.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| nethandle | Network ID.|
| prop | Link information.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.GET_NETWORK_INFO
### OH_NetConn_GetDefaultHttpProxy()
```
int32_t OH_NetConn_GetDefaultHttpProxy (NetConn_HttpProxy * httpProxy)
```
**Description**
Obtains the default network proxy.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| httpProxy | Proxy configuration information.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
### OH_NetConn_GetDefaultNet()
```
int32_t OH_NetConn_GetDefaultNet (NetConn_NetHandle * netHandle)
```
**Description**
Obtains the default activated data network.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| netHandle | Network ID.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.GET_NETWORK_INFO
### OH_NetConn_GetNetCapabilities()
```
int32_t OH_NetConn_GetNetCapabilities (NetConn_NetHandle * netHandle, NetConn_NetCapabilities * netCapacities )
```
**Description**
Obtains the capabilities of a data network.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| netHandle | Network ID.|
| netCapacities | Capability set.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.GET_NETWORK_INFO
### OH_NetConn_HasDefaultNet()
```
int32_t OH_NetConn_HasDefaultNet (int32_t * hasDefaultNet)
```
**Description**
Checks whether a default activated data network is available.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| hasDefaultNet | Whether there is a default network.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.GET_NETWORK_INFO
### OH_NetConn_IsDefaultNetMetered()
```
int32_t OH_NetConn_IsDefaultNetMetered (int32_t * isMetered)
```
**Description**
Checks whether metering is enabled for the default data network.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| isMetered | Whether metering is enabled.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.GET_NETWORK_INFO
### OHOS_NetConn_RegisterDnsResolver()
```
int32_t OHOS_NetConn_RegisterDnsResolver (OH_NetConn_CustomDnsResolver resolver)
```
**Description**
Registers a custom DNS resolver.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Parameters**
| Name| Description|
| -------- | -------- |
| resolver | Pointer to the custom DNS resolver.|
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.INTERNET
### OHOS_NetConn_UnregisterDnsResolver()
```
int32_t OHOS_NetConn_UnregisterDnsResolver (void )
```
**Description**
Unregisters a custom DNS resolver.
**System capability**: SystemCapability.Communication.NetManager.Core
**Since**: 11
**Returns**
**0**: success.
201 - no permission.
**401**: parameter error.
**2100002**: failed to connect to the service.
**2100003**: internal error.
**Required permissions**:
ohos.permission.INTERNET