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