@ohos.net.mdns (mDNS Management)

Multicast DNS (mDNS) provides functions such as adding, removing, discovering, and resolving local services on a LAN.

NOTE The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.

Modules to Import

import mdns from '@ohos.net.mdns'

mdns.addLocalService

addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback<LocalServiceInfo>): void

Adds an mDNS service. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceInfo LocalServiceInfo Yes mDNS service information.
callback AsyncCallback<LocalServiceInfo> Yes Callback used to return the result. If the operation is successful, error is undefined and data is the mDNS service information.

Error codes

ID Error Message
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2204003 Callback duplicated.
2204008 Service instance duplicated.
2204010 Send packet failed.

NOTE For details about the error codes, see mDNS Error Codes.

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let localServiceInfo: mdns.LocalServiceInfo = {
  serviceType: "_print._tcp",
  serviceName: "servicename",
  port: 5555,
  host: {
  address: "10.14.**.***",
  },
  serviceAttribute: [{key: "111", value: [1]}]
}

mdns.addLocalService(context, localServiceInfo, (error:BusinessError, data:mdns.LocalServiceInfo) =>  {
  console.log(JSON.stringify(error));
  console.log(JSON.stringify(data));
});

mdns.addLocalService

addLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise<LocalServiceInfo>

Adds an mDNS service. This API uses a promise to return the result.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceInfo LocalServiceInfo Yes mDNS service information.

Return value

Type Description
Promise<LocalServiceInfo> Promise used to return the result.

Error codes

ID Error Message
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2204003 Callback duplicated.
2204008 Service instance duplicated.
2204010 Send packet failed.

NOTE For details about the error codes, see mDNS Error Codes.

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let localServiceInfo: mdns.LocalServiceInfo = {
  serviceType: "_print._tcp",
  serviceName: "servicename",
  port: 5555,
  host: {
    address: "10.14.**.***",
  },
  serviceAttribute: [{key: "111", value: [1]}]
}

mdns.addLocalService(context, localServiceInfo).then((data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

mdns.removeLocalService

removeLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback<LocalServiceInfo>): void

Removes an mDNS service. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceInfo LocalServiceInfo Yes mDNS service information.
callback AsyncCallback<LocalServiceInfo> Yes Callback used to return the result. If the operation is successful, error is undefined and data is the mDNS service information.

Error codes

ID Error Message
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2204002 Callback not found.
2204008 Service instance not found.
2204010 Send packet failed.

NOTE For details about the error codes, see mDNS Error Codes.

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let localServiceInfo: mdns.LocalServiceInfo = {
  serviceType: "_print._tcp",
  serviceName: "servicename",
  port: 5555,
  host: {
  address: "10.14.**.***",
  },
  serviceAttribute: [{key: "111", value: [1]}]
}

mdns.removeLocalService(context, localServiceInfo, (error: BusinessError, data: mdns.LocalServiceInfo) =>  {
  console.log(JSON.stringify(error));
  console.log(JSON.stringify(data));
});

mdns.removeLocalService

removeLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise<LocalServiceInfo>

Removes an mDNS service. This API uses a promise to return the result.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceInfo LocalServiceInfo Yes mDNS service information.

Return value

Type Description
Promise<LocalServiceInfo> Promise used to return the result.

Error codes

ID Error Message
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2204002 Callback not found.
2204008 Service instance not found.
2204010 Send packet failed.

NOTE For details about the error codes, see mDNS Error Codes.

Example

Stage model:

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let localServiceInfo: mdns.LocalServiceInfo = {
  serviceType: "_print._tcp",
  serviceName: "servicename",
  port: 5555,
  host: {
  address: "10.14.**.***",
  },
  serviceAttribute: [{key: "111", value: [1]}]
}

mdns.removeLocalService(context, localServiceInfo).then((data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

mdns.createDiscoveryService

createDiscoveryService(context: Context, serviceType: string): DiscoveryService

Creates a DiscoveryService object, which is used to discover mDNS services of the specified type.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceType string Yes Type of the mDNS services to be discovered.

Return value

Type Description
DiscoveryService DiscoveryService object used to discover mDNS services based on the specified serviceType and Context.

Error codes

ID Error Message
401 Parameter error.

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let serviceType = "_print._tcp";
let discoveryService : Object = mdns.createDiscoveryService(context, serviceType);

mdns.resolveLocalService

resolveLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback<LocalServiceInfo>): void

Resolves an mDNS service. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceInfo LocalServiceInfo Yes mDNS service information.
callback AsyncCallback<LocalServiceInfo> Yes Callback used to return the result. If the operation is successful, error is undefined and data is the mDNS service information.

Error codes

ID Error Message
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2204003 Callback duplicated.
2204006 Request timeout.
2204010 Send packet failed.

NOTE For details about the error codes, see mDNS Error Codes.

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let localServiceInfo: mdns.LocalServiceInfo = {
  serviceType: "_print._tcp",
  serviceName: "servicename",
  port: 5555,
  host: {
  address: "10.14.**.***",
  },
  serviceAttribute: [{key: "111", value: [1]}]
}

mdns.resolveLocalService(context, localServiceInfo, (error: BusinessError, data: mdns.LocalServiceInfo) =>  {
  console.log(JSON.stringify(error));
  console.log(JSON.stringify(data));
});

mdns.resolveLocalService

resolveLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise<LocalServiceInfo>

Resolves an mDNS service. This API uses a promise to return the result.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
context Context Yes Application context.
For details about the application context of the FA model, see Context.
For details about the application context of the stage model, see Context.
serviceInfo LocalServiceInfo Yes mDNS service information.

Return value

Type Description
Promise<LocalServiceInfo> Promise used to return the result.

Error codes

ID Error Message
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2204003 Callback duplicated.
2204006 Request timeout.
2204010 Send packet failed.

NOTE For details about the error codes, see mDNS Error Codes.

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;

let localServiceInfo: mdns.LocalServiceInfo = {
  serviceType: "_print._tcp",
  serviceName: "servicename",
  port: 5555,
  host: {
  address: "10.14.**.***",
  },
  serviceAttribute: [{key: "111", value: [1]}]
}

mdns.resolveLocalService(context, localServiceInfo).then((data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

DiscoveryService

Defines a DiscoveryService object for discovering mDNS services of the specified type.

startSearchingMDNS

startSearchingMDNS(): void

Searches for mDNS services on the LAN.

System capability: SystemCapability.Communication.NetManager.MDNS

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

stopSearchingMDNS

stopSearchingMDNS(): void

Stops searching for mDNS services on the LAN.

System capability: SystemCapability.Communication.NetManager.MDNS

Example

Stage model:

// Obtain the context.
import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.stopSearchingMDNS();

on('discoveryStart')

on(type: 'discoveryStart', callback: Callback): void

Enables listening for discoveryStart events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of discoveryStart.
discoveryStart: event of starting discovery of mDNS services on the LAN.
callback Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}> Yes Callback used to return the mDNS service and error information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('discoveryStart', (data: mdns.DiscoveryEventInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

off('discoveryStart')

off(type: 'discoveryStart', callback?: Callback<DiscoveryEventInfo>): void

Disables listening for discoveryStart events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of discoveryStart.
discoveryStart: event of starting discovery of mDNS services on the LAN.
callback Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}> No Callback used to return the mDNS service and error information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('discoveryStart', (data: mdns.DiscoveryEventInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

discoveryService.off('discoveryStart', (data: mdns.DiscoveryEventInfo) => {
  console.log(JSON.stringify(data));
});

on('discoveryStop')

on(type: 'discoveryStop', callback: Callback<DiscoveryEventInfo>): void

Enables listening for discoveryStop events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of discoveryStop.
discoveryStop: event of stopping discovery of mDNS services on the LAN.
callback Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}> Yes Callback used to return the mDNS service and error information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('discoveryStop', (data: mdns.DiscoveryEventInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

off('discoveryStop')

off(type: 'discoveryStop', callback?: Callback<DiscoveryEventInfo>): void

Disables listening for discoveryStop events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of discoveryStop.
discoveryStop: event of stopping discovery of mDNS services on the LAN.
callback Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}> No Callback used to return the mDNS service and error information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('discoveryStop', (data: mdns.DiscoveryEventInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

discoveryService.off('discoveryStop', (data: mdns.DiscoveryEventInfo) => {
  console.log(JSON.stringify(data));
});

on('serviceFound')

on(type: 'serviceFound', callback: Callback<LocalServiceInfo>): void

Enables listening for serviceFound events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of serviceFound.
serviceFound: event indicating an mDNS service is found.
callback Callback<LocalServiceInfo> Yes mDNS service information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('serviceFound', (data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

off('serviceFound')

off(type: 'serviceFound', callback?: Callback<LocalServiceInfo>): void

Disables listening for serviceFound events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of serviceFound.
serviceFound: event indicating an mDNS service is found.
callback Callback<LocalServiceInfo> No mDNS service information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('serviceFound', (data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

discoveryService.off('serviceFound', (data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

on('serviceLost')

on(type: 'serviceLost', callback: Callback<LocalServiceInfo>): void

Enables listening for serviceLost events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of serviceLost.
serviceLost: event indicating that an mDNS service is removed.
callback Callback<LocalServiceInfo> Yes mDNS service information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

off('serviceLost')

off(type: 'serviceLost', callback?: Callback<LocalServiceInfo>): void

Disables listening for serviceLost events.

System capability: SystemCapability.Communication.NetManager.MDNS

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of serviceLost.
serviceLost: event indicating that an mDNS service is removed.
callback Callback<LocalServiceInfo> No mDNS service information.

Example

import mdns from '@ohos.net.mdns'
import { BusinessError } from '@ohos.base';

// See mdns.createDiscoveryService.
let context = getContext(this) as Context;
let serviceType = "_print._tcp";
let discoveryService = mdns.createDiscoveryService(context, serviceType);
discoveryService.startSearchingMDNS();

discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

discoveryService.stopSearchingMDNS();

discoveryService.off('serviceLost', (data: mdns.LocalServiceInfo) => {
  console.log(JSON.stringify(data));
});

LocalServiceInfo

Defines the mDNS service information.

System capability: SystemCapability.Communication.NetManager.MDNS

Name Type Mandatory Description
serviceType string Yes Type of the mDNS service. The value is in the format of _<name>.<_tcp/_udp>, where name contains a maximum of 63 characters excluding periods (.).
serviceName string Yes Name of the mDNS service.
port number No Port number of the mDNS server.
host NetAddress No IP address of the device that provides the mDNS service. The IP address is not effective when an mDNS service is added or removed.
serviceAttribute serviceAttribute<ServiceAttribute> No mDNS service attribute information.

ServiceAttribute

Defines the mDNS service attribute information.

System capability: SystemCapability.Communication.NetManager.MDNS

Name Type Mandatory Description
key string Yes mDNS service attribute key. The value contains a maximum of 9 characters.
value Array<number> Yes mDNS service attribute value.

MdnsError

Defines the mDNS error information.

System capability: SystemCapability.Communication.NetManager.MDNS

Name Value Description
INTERNAL_ERROR 0 Operation failed because of an internal error. (not supported currently)
ALREADY_ACTIVE 1 Operation failed because the service already exists. (not supported currently)
MAX_LIMIT 2 Operation failed because the number of requests exceeds the maximum value. (not supported currently)