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