0

嗨朋友们,我在 android 应用程序中使用 NETWROK SERVICE DISCOVERY 来查找服务类型“_dockset._tcp”。我已成功获取设备列表,但无法获取所有设备的 InetAddres 列表。我只得到第一个发现设备的 InetAdress,但我想要发现所有设备的 InetAdress。您将非常感谢您的帮助。我在用

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





        }
    };
}

我很困惑如何迭代 InetAddess

4

1 回答 1

0

您需要遵循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(....);
              }
        }
    };

您需要单独对服务信息实例(主机、类型等)执行操作。当然,您可以修改条件以进一步添加到列表中,例如过滤服务类型和/或名称。

于 2017-03-28T12:23:33.413 回答