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