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