• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.net.mdns (MDNS管理)
2
3MDNS即多播DNS(Multicast DNS),提供局域网内的本地服务添加、移除、发现、解析等能力。
4
5> **说明:**
6> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7
8## 导入模块
9
10```ts
11import { mdns } from '@kit.NetworkKit';
12```
13
14## mdns.addLocalService
15
16addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\<LocalServiceInfo>): void
17
18添加一个mDNS服务,使用callback方式作为异步方法。
19
20**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
21
22**系统能力**:SystemCapability.Communication.NetManager.MDNS
23
24**参数:**
25
26| 参数名        | 类型                             | 必填 | 说明                                     |
27|-------------|----------------------------------|-----------|-------------------------------------------------|
28| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
29| serviceInfo | [LocalServiceInfo](#localserviceinfo)                 | 是        |   mDNS服务的信息。      |
30| callback | AsyncCallback\<[LocalServiceInfo](#localserviceinfo)> | 是        |   回调函数。成功添加error为undefined,data为添加到本地的mdns服务信息。      |
31
32**错误码:**
33
34| 错误码ID      | 错误信息 |
35|---------|---|
36| 401     | Parameter error. |
37| 2100002 | Failed to connect to the service. |
38| 2100003 | System internal error. |
39| 2204003 | Callback duplicated. |
40| 2204008 | Failed to delete the service instance. |
41| 2204010 | Failed to send the message. |
42
43> **错误码说明:**
44> 以上错误码的详细介绍参见[MDNS错误码](errorcode-net-mdns.md)。
45
46**示例:**
47
48**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)49
50Stage模型示例:
51
52```ts
53import { mdns } from '@kit.NetworkKit';
54import { BusinessError } from '@kit.BasicServicesKit';
55import { common } from '@kit.AbilityKit';
56
57// 获取context
58let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
59
60let localServiceInfo: mdns.LocalServiceInfo = {
61  serviceType: "_print._tcp",
62  serviceName: "servicename",
63  port: 5555,
64  host: {
65  address: "10.14.**.***",
66  },
67  serviceAttribute: [{key: "111", value: [1]}]
68}
69
70mdns.addLocalService(context, localServiceInfo, (error:BusinessError, data:mdns.LocalServiceInfo) =>  {
71  console.log(JSON.stringify(error));
72  console.log(JSON.stringify(data));
73});
74```
75
76## mdns.addLocalService
77
78addLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\<LocalServiceInfo>
79
80添加一个mDNS服务,使用Promise方式作为异步方法。
81
82**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
83
84**系统能力**:SystemCapability.Communication.NetManager.MDNS
85
86**参数:**
87
88| 参数名        | 类型                             | 必填 | 说明                                     |
89|-------------|----------------------------------|-----------|-------------------------------------------------|
90| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
91| serviceInfo | [LocalServiceInfo](#localserviceinfo)                 | 是        |   mDNS服务的信息。      |
92
93**返回值:**
94
95| 类型                              | 说明                                  |
96| --------------------------------- | ------------------------------------- |
97| Promise\<[LocalServiceInfo](#localserviceinfo)> | 以Promise形式返回添加的mdns服务信息。 |
98
99**错误码:**
100
101| 错误码ID      | 错误信息 |
102|---------|---|
103| 401     | Parameter error. |
104| 2100002 | Failed to connect to the service. |
105| 2100003 | System internal error. |
106| 2204003 | Callback duplicated. |
107| 2204008 | Failed to delete the service instance. |
108| 2204010 | Failed to send the message. |
109
110> **错误码说明:**
111> 以上错误码的详细介绍参见[MDNS错误码](errorcode-net-mdns.md)。
112
113**示例:**
114
115Stage模型示例:
116
117**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)118
119```ts
120import { mdns } from '@kit.NetworkKit';
121import { BusinessError } from '@kit.BasicServicesKit';
122import { common } from '@kit.AbilityKit';
123
124// 获取context
125let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
126
127let localServiceInfo: mdns.LocalServiceInfo = {
128  serviceType: "_print._tcp",
129  serviceName: "servicename",
130  port: 5555,
131  host: {
132    address: "10.14.**.***",
133  },
134  serviceAttribute: [{key: "111", value: [1]}]
135}
136
137mdns.addLocalService(context, localServiceInfo).then((data: mdns.LocalServiceInfo) => {
138  console.log(JSON.stringify(data));
139});
140```
141
142## mdns.removeLocalService
143
144removeLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\<LocalServiceInfo>): void
145
146移除一个mDNS服务,使用callback方式作为异步方法。
147
148**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
149
150**系统能力**: SystemCapability.Communication.NetManager.MDNS
151
152**参数**
153
154| 参数名        | 类型                             | 必填 | 说明                                     |
155|-------------|----------------------------------|-----------|-------------------------------------------------|
156| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
157| serviceInfo | [LocalServiceInfo](#localserviceinfo)                 | 是        |   mDNS服务的信息。      |
158| callback | AsyncCallback\<[LocalServiceInfo](#localserviceinfo)> | 是        |   回调函数。成功移除error为undefined,data为移除本地的mdns服务信息。      |
159
160**错误码:**
161
162| 错误码ID      | 错误信息 |
163|---------|---|
164| 401     | Parameter error. |
165| 2100002 | Failed to connect to the service. |
166| 2100003 | System internal error. |
167| 2204002 | Callback not found. |
168| 2204008 | Failed to delete the service instance. |
169| 2204010 | Failed to send the message. |
170
171> **错误码说明:**
172> 以上错误码的详细介绍参见[MDNS错误码](errorcode-net-mdns.md)。
173
174**示例:**
175
176**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)177
178Stage模型示例:
179
180```ts
181import { mdns } from '@kit.NetworkKit';
182import { BusinessError } from '@kit.BasicServicesKit';
183import { common } from '@kit.AbilityKit';
184
185// 获取context
186let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
187
188let localServiceInfo: mdns.LocalServiceInfo = {
189  serviceType: "_print._tcp",
190  serviceName: "servicename",
191  port: 5555,
192  host: {
193  address: "10.14.**.***",
194  },
195  serviceAttribute: [{key: "111", value: [1]}]
196}
197
198mdns.removeLocalService(context, localServiceInfo, (error: BusinessError, data: mdns.LocalServiceInfo) =>  {
199  console.log(JSON.stringify(error));
200  console.log(JSON.stringify(data));
201});
202```
203
204## mdns.removeLocalService
205
206removeLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\<LocalServiceInfo>
207
208移除一个mDNS服务. 使用Promise方式作为异步方法。
209
210**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
211
212**系统能力**: SystemCapability.Communication.NetManager.MDNS
213
214**参数**
215
216| 参数名        | 类型                             | 必填 | 说明                                     |
217|-------------|----------------------------------|-----------|-------------------------------------------------|
218| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
219| serviceInfo | [LocalServiceInfo](#localserviceinfo)                 | 是        |   mDNS服务的信息。      |
220
221**返回值:**
222
223| 类型                              | 说明                                  |
224| --------------------------------- | ------------------------------------- |
225| Promise\<[LocalServiceInfo](#localserviceinfo)> | 以Promise形式返回移除的mdns服务信息。 |
226
227**错误码:**
228
229| 错误码ID      | 错误信息 |
230|---------|---|
231| 401     | Parameter error. |
232| 2100002 | Failed to connect to the service. |
233| 2100003 | System internal error. |
234| 2204002 | Callback not found. |
235| 2204008 | Failed to delete the service instance. |
236| 2204010 | Failed to send the message. |
237
238> **错误码说明:**
239> 以上错误码的详细介绍参见[MDNS错误码](errorcode-net-mdns.md)。
240
241**示例:**
242
243**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)244
245Stage模型示例:
246
247```ts
248import { mdns } from '@kit.NetworkKit';
249import { BusinessError } from '@kit.BasicServicesKit';
250import { common } from '@kit.AbilityKit';
251
252let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
253
254let localServiceInfo: mdns.LocalServiceInfo = {
255  serviceType: "_print._tcp",
256  serviceName: "servicename",
257  port: 5555,
258  host: {
259  address: "10.14.**.***",
260  },
261  serviceAttribute: [{key: "111", value: [1]}]
262}
263
264mdns.removeLocalService(context, localServiceInfo).then((data: mdns.LocalServiceInfo) => {
265  console.log(JSON.stringify(data));
266});
267```
268
269## mdns.createDiscoveryService
270
271createDiscoveryService(context: Context, serviceType: string): DiscoveryService
272
273返回一个DiscoveryService对象,该对象用于发现指定服务类型的mDNS服务。
274
275**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
276
277**系统能力**:SystemCapability.Communication.NetManager.MDNS
278
279**参数:**
280
281| 参数名        | 类型                             | 必填 | 说明                                     |
282|-------------|---------|-----------| ------------------------------------------------------------ |
283| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
284| serviceType | string  | 是       | 需要发现的mDNS服务类型。|
285
286**返回值:**
287
288| Type                         | Description                     |
289| ----------------------------- |---------------------------------|
290| DiscoveryService | 基于指定serviceType和Context的发现服务对象。 |
291
292**错误码:**
293
294| 错误码ID      | 错误信息 |
295|---------|---|
296| 401     | Parameter error. |
297
298**示例**
299
300Stage模型示例:
301
302**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)303
304```ts
305import { mdns } from '@kit.NetworkKit';
306import { BusinessError } from '@kit.BasicServicesKit';
307import { common } from '@kit.AbilityKit';
308
309// 获取context
310let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
311
312let serviceType = "_print._tcp";
313let discoveryService : Object = mdns.createDiscoveryService(context, serviceType);
314```
315
316## mdns.resolveLocalService
317
318resolveLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\<LocalServiceInfo>): void
319
320解析一个mDNS服务,使用callback方式作为异步方法。
321
322**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
323
324**系统能力**: SystemCapability.Communication.NetManager.MDNS
325
326**参数:**
327
328| 参数名        | 类型                             | 必填 | 说明                                     |
329|-------------|----------------------------------|-----------|-------------------------------------------------------------|
330| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
331| serviceInfo | [LocalServiceInfo](#localserviceinfo)                 | 是        |   mDNS服务的信息。      |
332| callback | AsyncCallback\<[LocalServiceInfo](#localserviceinfo)> | 是        |   回调函数。成功移除error为undefined,data为解析的mdns服务信息。      |
333
334**错误码:**
335
336| 错误码ID      | 错误信息 |
337|---------|----------------------------------------------|
338| 401     | Parameter error.                             |
339| 2100002 | Failed to connect to the service.            |
340| 2100003 | System internal error.                       |
341| 2204003 | Callback duplicated.                         |
342| 2204006 | Request timeout.                |
343| 2204010 | Failed to send the message.                  |
344
345> **错误码说明:**
346> 以上错误码的详细介绍参见[MDNS错误码](errorcode-net-mdns.md)。
347
348**示例:**
349
350**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)351
352Stage模型示例:
353
354```ts
355import { mdns } from '@kit.NetworkKit';
356import { BusinessError } from '@kit.BasicServicesKit';
357import { common } from '@kit.AbilityKit';
358
359// 获取context
360let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
361
362let localServiceInfo: mdns.LocalServiceInfo = {
363  serviceType: "_print._tcp",
364  serviceName: "servicename",
365  port: 5555,
366  host: {
367  address: "10.14.**.***",
368  },
369  serviceAttribute: [{key: "111", value: [1]}]
370}
371
372mdns.resolveLocalService(context, localServiceInfo, (error: BusinessError, data: mdns.LocalServiceInfo) =>  {
373  console.log(JSON.stringify(error));
374  console.log(JSON.stringify(data));
375});
376```
377
378## mdns.resolveLocalService
379
380resolveLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\<LocalServiceInfo>
381
382解析一个mDNS服务,使用Promise方式作为异步方法。
383
384**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
385
386**系统能力**: SystemCapability.Communication.NetManager.MDNS
387
388**参数:**
389
390| 参数名        | 类型                             | 必填 | 说明                                     |
391|-------------|--------------|-----------|-----------------------------------------------------|
392| context     | Context                          | 是       | 应用的上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-app-ability-uiAbility.md)。 |
393| serviceInfo | [LocalServiceInfo](#localserviceinfo)                 | 是        |   mDNS服务的信息。      |
394
395**返回值:**
396
397| 类型                              | 说明                                  |
398|----------------------------| ------------------------------------- |
399| Promise\<[LocalServiceInfo](#localserviceinfo)> | 以Promise形式返回解析的mDNS服务信息。|
400
401**错误码:**
402
403| 错误码ID      | 错误信息 |
404|---------|----------------------------------------------|
405| 401     | Parameter error.                             |
406| 2100002 | Failed to connect to the service.            |
407| 2100003 | System internal error.                       |
408| 2204003 | Callback duplicated.                         |
409| 2204006 | Request timeout.                |
410| 2204010 | Failed to send the message.                  |
411
412> **错误码说明:**
413> 以上错误码的详细介绍参见[MDNS错误码](errorcode-net-mdns.md)。
414
415**示例:**
416
417**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)418
419Stage模型示例:
420
421```ts
422import { mdns } from '@kit.NetworkKit';
423import { BusinessError } from '@kit.BasicServicesKit';
424import { common } from '@kit.AbilityKit';
425
426// 获取context
427let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
428
429let localServiceInfo: mdns.LocalServiceInfo = {
430  serviceType: "_print._tcp",
431  serviceName: "servicename",
432  port: 5555,
433  host: {
434  address: "10.14.**.***",
435  },
436  serviceAttribute: [{key: "111", value: [1]}]
437}
438
439mdns.resolveLocalService(context, localServiceInfo).then((data: mdns.LocalServiceInfo) => {
440  console.log(JSON.stringify(data));
441});
442```
443## DiscoveryService
444
445指定服务类型的发现服务对象。
446
447### startSearchingMDNS
448
449startSearchingMDNS(): void
450
451开始搜索局域网内的mDNS服务。
452
453**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
454
455**系统能力**:SystemCapability.Communication.NetManager.MDNS
456
457**示例:**
458
459**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)460
461Stage模型示例:
462
463```ts
464import { mdns } from '@kit.NetworkKit';
465import { BusinessError } from '@kit.BasicServicesKit';
466import { common } from '@kit.AbilityKit';
467
468// 获取context
469let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
470let serviceType = "_print._tcp";
471let discoveryService = mdns.createDiscoveryService(context, serviceType);
472discoveryService.startSearchingMDNS();
473```
474
475### stopSearchingMDNS
476
477stopSearchingMDNS(): void
478
479停止搜索局域网内的mDNS服务。
480
481**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
482
483**系统能力**:SystemCapability.Communication.NetManager.MDNS
484
485**示例:**
486
487**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)488
489Stage模型示例:
490
491```ts
492import { mdns } from '@kit.NetworkKit';
493import { BusinessError } from '@kit.BasicServicesKit';
494import { common } from '@kit.AbilityKit';
495
496// 获取context
497let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
498let serviceType = "_print._tcp";
499let discoveryService = mdns.createDiscoveryService(context, serviceType);
500discoveryService.stopSearchingMDNS();
501```
502
503### on('discoveryStart')
504
505on(type: 'discoveryStart', callback: Callback\<DiscoveryEventInfo\>): void
506
507订阅开启监听mDNS服务的通知。
508
509**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
510
511**系统能力**:SystemCapability.Communication.NetManager.MDNS
512
513**参数:**
514
515| 参数名      | 类型                             | 必填 | 说明                                                   |
516|-------------|---------------------------------|------|--------------------------------------------------------|
517| type        | string                          | 是   | 订阅事件,固定为'discoveryStart'。<br>discoveryStart:开始搜索局域网内的mDNS服务事件。|
518| callback    | Callback\<DiscoveryEventInfo\>  | 是   | mDNS服务的信息和事件错误信息。                           |
519
520**示例:**
521
522**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)523
524```ts
525import { mdns } from '@kit.NetworkKit';
526import { BusinessError } from '@kit.BasicServicesKit';
527import { common } from '@kit.AbilityKit';
528
529// 参考mdns.createDiscoveryService
530let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
531let serviceType = "_print._tcp";
532let discoveryService = mdns.createDiscoveryService(context, serviceType);
533discoveryService.startSearchingMDNS();
534
535discoveryService.on('discoveryStart', (data: mdns.DiscoveryEventInfo) => {
536  console.log(JSON.stringify(data));
537});
538
539discoveryService.stopSearchingMDNS();
540```
541
542### off('discoveryStart')
543
544off(type: 'discoveryStart', callback?: Callback\<DiscoveryEventInfo\>): void
545
546取消开启监听mDNS服务的通知。
547
548**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
549
550**系统能力**:SystemCapability.Communication.NetManager.MDNS
551
552**参数:**
553
554| 参数名        | 类型                             | 必填 | 说明                                     |
555|-------------|--------------|-----------|-----------------------------------------------------|
556| type     | string                          | 是       |取消订阅的事件,固定为'discoveryStart'。<br>discoveryStart:开始搜索局域网内的mDNS服务事件。 |
557| callback | Callback\<DiscoveryEventInfo\>  | 否       |mDNS服务的信息和事件错误信息。          |
558
559**示例:**
560
561**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)562
563```ts
564import { mdns } from '@kit.NetworkKit';
565import { BusinessError } from '@kit.BasicServicesKit';
566import { common } from '@kit.AbilityKit';
567
568// 参考mdns.createDiscoveryService
569let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
570let serviceType = "_print._tcp";
571let discoveryService = mdns.createDiscoveryService(context, serviceType);
572discoveryService.startSearchingMDNS();
573
574discoveryService.on('discoveryStart', (data: mdns.DiscoveryEventInfo) => {
575  console.log(JSON.stringify(data));
576});
577
578discoveryService.stopSearchingMDNS();
579
580discoveryService.off('discoveryStart', (data: mdns.DiscoveryEventInfo) => {
581  console.log(JSON.stringify(data));
582});
583```
584
585### on('discoveryStop')
586
587on(type: 'discoveryStop', callback: Callback\<DiscoveryEventInfo\>): void
588
589订阅停止监听mDNS服务的通知。
590
591**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
592
593**系统能力**:SystemCapability.Communication.NetManager.MDNS
594
595**参数:**
596
597| 参数名        | 类型                             | 必填 | 说明                                     |
598|-------------|--------------|-----------|-----------------------------------------------------|
599| type     | string                          | 是       |订阅事件,固定为'discoveryStop'。<br>discoveryStop:停止搜索局域网内的mDNS服务事件。 |
600| callback | Callback\<DiscoveryEventInfo\>  | 是       |mDNS服务的信息和事件错误信息。      |
601
602**示例:**
603
604**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)605
606```ts
607import { mdns } from '@kit.NetworkKit';
608import { BusinessError } from '@kit.BasicServicesKit';
609import { common } from '@kit.AbilityKit';
610
611// 参考mdns.createDiscoveryService
612let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
613let serviceType = "_print._tcp";
614let discoveryService = mdns.createDiscoveryService(context, serviceType);
615discoveryService.startSearchingMDNS();
616
617discoveryService.on('discoveryStop', (data: mdns.DiscoveryEventInfo) => {
618  console.log(JSON.stringify(data));
619});
620
621discoveryService.stopSearchingMDNS();
622```
623
624### off('discoveryStop')
625
626off(type: 'discoveryStop', callback?: Callback\<DiscoveryEventInfo\>): void
627
628取消订阅停止监听mDNS服务的通知。
629
630**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
631
632**系统能力**:SystemCapability.Communication.NetManager.MDNS
633
634**参数:**
635
636| 参数名        | 类型                             | 必填 | 说明                                     |
637|-------------|--------------|-----------|-----------------------------------------------------|
638| type     | string                          | 是       |取消订阅的事件'discoveryStop'。<br>discoveryStop:停止搜索局域网内的mDNS服务事件。 |
639| callback | Callback\<DiscoveryEventInfo\>  | 否       |mDNS服务的信息和事件错误信息。      |
640
641**示例:**
642
643**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)644
645```ts
646import { mdns } from '@kit.NetworkKit';
647import { BusinessError } from '@kit.BasicServicesKit';
648import { common } from '@kit.AbilityKit';
649
650// 参考mdns.createDiscoveryService
651let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
652let serviceType = "_print._tcp";
653let discoveryService = mdns.createDiscoveryService(context, serviceType);
654discoveryService.startSearchingMDNS();
655
656discoveryService.on('discoveryStop', (data: mdns.DiscoveryEventInfo) => {
657  console.log(JSON.stringify(data));
658});
659
660discoveryService.stopSearchingMDNS();
661
662discoveryService.off('discoveryStop', (data: mdns.DiscoveryEventInfo) => {
663  console.log(JSON.stringify(data));
664});
665```
666
667### on('serviceFound')
668
669on(type: 'serviceFound', callback: Callback\<LocalServiceInfo>): void
670
671订阅发现mDNS服务的通知。
672
673**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
674
675**系统能力**:SystemCapability.Communication.NetManager.MDNS
676
677**参数:**
678
679| 参数名        | 类型                             | 必填 | 说明                                     |
680|-------------|--------------|-----------|-----------------------------------------------------|
681| type     | string                          | 是       |订阅事件,固定为'serviceFound'。<br>serviceFound:发现mDNS服务事件。 |
682| callback | Callback<[LocalServiceInfo](#localserviceinfo)>                 | 是        |   mDNS服务的信息,需调用resolveLocalService解析这个mDNS服务信息。      |
683
684**示例:**
685
686**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)687
688```ts
689import { mdns } from '@kit.NetworkKit';
690import { BusinessError } from '@kit.BasicServicesKit';
691import { common } from '@kit.AbilityKit';
692
693// 参考mdns.createDiscoveryService
694let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
695let serviceType = "_print._tcp";
696let discoveryService = mdns.createDiscoveryService(context, serviceType);
697discoveryService.startSearchingMDNS();
698
699discoveryService.on('serviceFound', (data: mdns.LocalServiceInfo) => {
700  console.info('serviceFound', JSON.stringify(data));
701  mdns.resolveLocalService(context, data, (error: BusinessError, resolveData: mdns.LocalServiceInfo) =>  {
702    console.info('serviceFound', JSON.stringify(resolveData));
703  });
704});
705
706discoveryService.stopSearchingMDNS();
707```
708
709### off('serviceFound')
710
711off(type: 'serviceFound', callback?: Callback\<LocalServiceInfo>): void
712
713取消订阅发现mDNS服务的通知。
714
715**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
716
717**系统能力**:SystemCapability.Communication.NetManager.MDNS
718
719**参数:**
720
721| 参数名        | 类型                             | 必填 | 说明                                     |
722|-------------|--------------|-----------|-----------------------------------------------------|
723| type     | string                          | 是       |取消订阅的事件,固定为'serviceFound'。<br>serviceFound:发现mDNS服务事件。 |
724| callback | Callback<[LocalServiceInfo](#localserviceinfo)>                 | 否        |   mDNS服务的信息。      |
725
726**示例:**
727
728**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)729
730```ts
731import { mdns } from '@kit.NetworkKit';
732import { BusinessError } from '@kit.BasicServicesKit';
733import { common } from '@kit.AbilityKit';
734
735// 参考mdns.createDiscoveryService
736let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
737let serviceType = "_print._tcp";
738let discoveryService = mdns.createDiscoveryService(context, serviceType);
739discoveryService.startSearchingMDNS();
740
741discoveryService.on('serviceFound', (data: mdns.LocalServiceInfo) => {
742  console.info('serviceFound', JSON.stringify(data));
743  mdns.resolveLocalService(context, data, (error: BusinessError, resolveData: mdns.LocalServiceInfo) =>  {
744    console.info('serviceFound', JSON.stringify(resolveData));
745  });
746});
747
748discoveryService.stopSearchingMDNS();
749
750discoveryService.off('serviceFound', (data: mdns.LocalServiceInfo) => {
751  console.log(JSON.stringify(data));
752});
753```
754
755### on('serviceLost')
756
757on(type: 'serviceLost', callback: Callback\<LocalServiceInfo>): void
758
759订阅移除mDNS服务的通知。
760
761**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
762
763**系统能力**:SystemCapability.Communication.NetManager.MDNS
764
765**参数:**
766
767| 参数名        | 类型                             | 必填 | 说明                                     |
768|-------------|--------------|-----------|-----------------------------------------------------|
769| type     | string                          | 是       |订阅事件,固定为'serviceLost'。<br>serviceLost:移除mDNS服务事件。 |
770| callback | Callback<[LocalServiceInfo](#localserviceinfo)>   | 是        |   mDNS服务的信息。      |
771
772**示例:**
773
774**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)775
776```ts
777import { mdns } from '@kit.NetworkKit';
778import { BusinessError } from '@kit.BasicServicesKit';
779import { common } from '@kit.AbilityKit';
780
781// 参考mdns.createDiscoveryService
782let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
783let serviceType = "_print._tcp";
784let discoveryService = mdns.createDiscoveryService(context, serviceType);
785discoveryService.startSearchingMDNS();
786
787discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => {
788  console.log(JSON.stringify(data));
789});
790
791discoveryService.stopSearchingMDNS();
792```
793
794### off('serviceLost')
795
796off(type: 'serviceLost', callback?: Callback\<LocalServiceInfo>): void
797
798取消订阅移除mDNS服务的通知。
799
800**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
801
802**系统能力**:SystemCapability.Communication.NetManager.MDNS
803
804**参数:**
805
806| 参数名        | 类型                             | 必填 | 说明                                     |
807|-------------|--------------|-----------|-----------------------------------------------------|
808| type     | string                          | 是       |取消订阅的事件,固定为'serviceLost'。<br>serviceLost:移除mDNS服务事件。 |
809| callback | Callback<[LocalServiceInfo](#localserviceinfo)>   | 否        |   mDNS服务的信息。      |
810
811**示例:**
812
813**注意:** 关于示例代码中this的说明:在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,[请参见获取UIAbility的上下文消息](http://gitee.com/openharmony/docs/blob/222f8d93e6f0056409aac096e041df3fdd8ae5ec/zh-cn/application-dev/application-models/uiability-usage.md)814
815```ts
816import { mdns } from '@kit.NetworkKit';
817import { BusinessError } from '@kit.BasicServicesKit';
818import { common } from '@kit.AbilityKit';
819
820// 参考mdns.createDiscoveryService
821let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
822let serviceType = "_print._tcp";
823let discoveryService = mdns.createDiscoveryService(context, serviceType);
824discoveryService.startSearchingMDNS();
825
826discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => {
827  console.log(JSON.stringify(data));
828});
829
830discoveryService.stopSearchingMDNS();
831
832discoveryService.off('serviceLost', (data: mdns.LocalServiceInfo) => {
833  console.log(JSON.stringify(data));
834});
835```
836
837## LocalServiceInfo
838
839mDNS服务信息。
840
841**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
842
843**系统能力**:SystemCapability.Communication.NetManager.MDNS
844
845| 名称                  | 类型                                | 必填 | 说明                     |
846| --------------------- | ---------------------------------- | --- | ------------------------ |
847| serviceType   | string                             |  是 |  mDNS服务的类型。格式_\<name>.<_tcp/_udp>,name长度小于63字符并且不能包含字符'.'。  |
848| serviceName | string                             |  是 |  mDNS服务的名字。   |
849| port            | number           |  否 |  mDNS服务的端口号。取值范围[0,65535]。           |
850| host           |  [NetAddress](js-apis-net-connection.md#netaddress) |  否 |  mDNS服务设备的IP地址。采用设备的IP,添加服务和移除服务时候不生效。               |
851| serviceAttribute     | Array\<[ServiceAttribute](#serviceattribute)> |  否 |  mDNS服务属性信息。               |
852
853## ServiceAttribute
854
855mDNS服务属性信息。
856
857**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
858
859**系统能力**:SystemCapability.Communication.NetManager.MDNS
860
861| 名称                  | 类型                                | 必填 | 说明                     |
862| --------------------- | ---------------------------------- | --- | ------------------------ |
863| key   | string                             |  是 |  mDNS服务属性键值,键值长度应该小于9个字符。  |
864| value | Array\<number>                             |  是 |  mDNS服务属性值。   |
865
866## DiscoveryEventInfo<sup>11+</sup>
867
868监听到的mDNS服务事件信息。
869
870**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
871
872**系统能力**:SystemCapability.Communication.NetManager.MDNS
873
874|    名称     |            类型                     | 必填 | 说明                  |
875| ----------- | ----------------------------------- | --- | --------------------- |
876| serviceInfo | LocalServiceInfo                    |  是 |  mDNS服务信息。        |
877| errorCode   | MdnsError                           |  否 |  mDNS错误信息。        |
878
879## MdnsError
880
881mDNS错误信息。
882
883**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
884
885**系统能力**:SystemCapability.Communication.NetManager.MDNS
886
887| 名称         | 值   | 说明        |
888| --------------- | ---- | ----------- |
889| INTERNAL_ERROR  | 0    | 内部错误导致操作失败。  |
890| ALREADY_ACTIVE      | 1    | 服务已经存在导致操作失败。 |
891| MAX_LIMIT  | 2 | 请求超过最大限制导致操作失败。 |
892
893## NetAddress
894
895type NetAddress = connection.NetAddress
896
897获取网络地址。
898
899**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
900
901**系统能力**:SystemCapability.Communication.NetManager.Core
902
903|       类型       |            说明             |
904| ---------------- | --------------------------- |
905| connection.NetAddress | 定义网络地址。     |
906