Android NSD主机返回NULL



我当前正在使用网络服务发现来检测本地网络上的HTTP服务。我使用了Google Android NSDCHAT项目示例,它只会返回主机名,但是主机IP地址为NULL。

这是我的功能,它将返回主机名

    public void onServiceFound(NsdServiceInfo service) {
        Log.d(TAG, "Service discovery success" + service.getHost());
        //pref.putString("name", service.getServiceName());
        if (!service.getServiceType().equals(SERVICE_TYPE)) {
            Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
        } else if (service.getServiceName().equals(mServiceName)) {
            Log.d(TAG, "Same machine: " + mServiceName);
        } else if (service.getServiceName().contains(mServiceName)){
            mNsdManager.resolveService(service, mResolveListener);
        }

    }

public void initializeResolveListener() {
mResolveListener = new NsdManager.ResolveListener() {
    @Override
    public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
        // Called when the resolve fails.  Use the error code to debug.
        Log.e(TAG, "Resolve failed" + errorCode);
    }
    @Override
    public void onServiceResolved(NsdServiceInfo serviceInfo) {
        Log.e(TAG, "Resolve Succeeded. " + serviceInfo);
        if (serviceInfo.getServiceName().equals(mServiceName)) {
            Log.d(TAG, "Same IP.");
            return;
        }
        mService = serviceInfo;
        int port = mService.getPort();
        host = mService.getHost(); // getHost() will work now
        Log.d(TAG, "Service discovery success" + host );
    }
};
}

我面临类似的问题,我找到了这个网站。但是,尝试过它,它也无法正常工作。

主机在nsdmanager.discoverylistener的nsdserviceinfo中为null。

最新更新