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.createDiscoveryService。 566let 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.createDiscoveryService。 608let 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.createDiscoveryService。 654let 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.createDiscoveryService。 696let 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.createDiscoveryService。 742let 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.createDiscoveryService。 787let 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.createDiscoveryService。 836let 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.createDiscoveryService。 878let 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