Android 如何在网络服务发现中获取InetAddress列表?
嗨,朋友们,我正在使用android应用程序中的NETWROK服务发现来查找服务类型“\u dockset.\u tcp”。我正在成功获取设备列表,但无法获取所有设备的InetAddres列表。我只获取第一个发现的设备的INETADRES,但我需要所有发现的设备的INETADRES。你会非常感谢你的帮助。我正在使用Android 如何在网络服务发现中获取InetAddress列表?,android,nsd,Android,Nsd,嗨,朋友们,我正在使用android应用程序中的NETWROK服务发现来查找服务类型“\u dockset.\u tcp”。我正在成功获取设备列表,但无法获取所有设备的InetAddres列表。我只获取第一个发现的设备的INETADRES,但我需要所有发现的设备的INETADRES。你会非常感谢你的帮助。我正在使用 public void startResolveListener(){ mResolveListener= new NsdManager.ResolveListener()
public void startResolveListener(){
mResolveListener= new NsdManager.ResolveListener() {
@Override
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
Log.d("resolve service failed"," with error"+errorCode);
}
@Override
public void onServiceResolved(NsdServiceInfo serviceInfo) {
;
int port=serviceInfo.getPort();
InetAddress host=serviceInfo.getHost();
mHost=String.valueOf(host);//here i am getting one host
}
};
}
我不知道如何迭代inetades您需要遵循
NsdManager
图,并使您的侦听器适应:
mResolveListener= new NsdManager.ResolveListener() {
@Override
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
Log.d("resolve service failed"," with error"+errorCode);
mNsdServiceList.remove(serviceInfo);
}
@Override
public void onServiceResolved(NsdServiceInfo serviceInfo) {
if(!mNsdServiceList.contains(serviceInfo)){
mNsdService.add(serviceInfo);
mNsdManager.resolveService(....);
}
}
};
您需要单独对服务信息实例(主机、类型等)执行操作。当然,您可以修改条件以进一步添加到列表中,例如筛选服务类型和/或名称 谢谢你的回答,但我没有得到你的解释。如果(!mNsdServiceList.contains(serviceInfo)){mNsdService.add(serviceInfo);mNsdManager.resolveService(..);}
mNsdServiceList
只是一个列表
。该语句用于检查列表是否包含该nsdserviceinfo。但我只返回一个serviceinfo。网络中有多个设备使用我正在查找的服务。在OnServiceFund方法中,我获取所有设备,但我的resolve listener只解析一个设备