NSNetworkManager.ResolveListener 消息 Android

2024-01-11

有人可以解释一下可以传递到回调中的错误消息吗?

public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode)

我以前见过错误代码 3,但不知道它意味着什么。该文档充其量看起来很脆弱......

Cheers,


我通过再次调用resolveService 解决了这个问题。它可能会连续失败几次,但最终会解决。

        @Override
        public void onServiceFound(NsdServiceInfo serviceInfo) {
            Log.d(TAG, "Service found: "+ serviceInfo);
            if (!serviceInfo.getServiceType().equals(SERVICE_TYPE)){
                Log.d(TAG, "Unknown service type: " + serviceInfo.getServiceType());
            } else if (serviceInfo.getServiceName().equals(mServiceName)){
                Log.d(TAG, "Same machine");
            } else {
                startResolveService(serviceInfo);
            }
        }

我没有从 onServiceFound 中调用resolveService,而是调用它的单独声明:

        private void startResolveService(NsdServiceInfo serviceInfo){
            NsdManager.ResolveListener newResolveListener = new NsdManager.ResolveListener() {
                @Override
                public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
                    Log.e(TAG, "Resolve Failed: " + serviceInfo + "\tError Code: " + errorCode);
                    switch (errorCode) {
                        case NsdManager.FAILURE_ALREADY_ACTIVE:
                            Log.e(TAG, "FAILURE_ALREADY_ACTIVE");
                            // Just try again...
                            startResolveService(serviceInfo);
                            break;
                        case NsdManager.FAILURE_INTERNAL_ERROR:
                            Log.e(TAG, "FAILURE_INTERNAL_ERROR");
                            break;
                        case NsdManager.FAILURE_MAX_LIMIT:
                            Log.e(TAG, "FAILURE_MAX_LIMIT");
                            break;
                    }
                 }

                @Override
                public void onServiceResolved(NsdServiceInfo serviceInfo) {
                    Log.i(TAG, "Service Resolved: " + serviceInfo);
                    mLocatedServices.add(serviceInfo);
                    reportNewService();
                }
            };
            mNsdManager.resolveService(serviceInfo, newResolveListener);
        }

当几乎同时发现多个服务时,第一个服务得到解决,然后您会再获得 FAILURE_ALREADY_ACTIVE 一两次,然后下一个服务得到解决,依此类推。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSNetworkManager.ResolveListener 消息 Android 的相关文章

随机推荐