nsdManager.discoverServices如何选择mdns协议
时间: 2024-03-14 10:46:38 浏览: 27
要使用mDNS协议来发现网络服务,可以使用Android的NSD API中的discoveryListeners参数。具体来说,您需要创建一个NsdManager.DiscoveryListener对象,并在其onStartDiscovery()方法中指定协议类型为PROTOCOL_MDNS,然后将该对象作为discoveryListeners参数传递给nsdManager.discoverServices()方法。
以下是使用mDNS协议发现网络服务的示例代码:
```
NsdManager nsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);
NsdManager.DiscoveryListener discoveryListener = new NsdManager.DiscoveryListener() {
@Override
public void onStartDiscovery(String serviceType) {
nsdManager.discoverServices(serviceType, NsdManager.PROTOCOL_MDNS, discoveryListener);
}
//...
};
nsdManager.discoverServices("_http._tcp", NsdManager.PROTOCOL_MDNS, discoveryListener);
```
在上面的代码中,我们创建了一个名为_discoveryListener的NsdManager.DiscoveryListener对象,并在其onStartDiscovery()方法中指定协议类型为PROTOCOL_MDNS。然后,我们调用nsdManager.discoverServices()方法来开始发现_http._tcp服务,同时将_discoveryListener对象作为discoveryListeners参数传递给该方法。
请注意,使用mDNS协议发现网络服务需要在AndroidManifest.xml文件中添加以下权限:
```
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
```
同时,您还需要在gradle.build文件中添加以下依赖项:
```
implementation 'androidx.jmdns:jmdns:3.5.5'
```
这是因为Android的NSD API并不直接支持mDNS协议,而是使用第三方库jmdns来实现该协议。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)