मैं NsdManager.DiscoveryListener.onServiceFound() पर पैरामीटर के रूप में पारित NsdServiceInfo का mhost प्राप्त करने का प्रयास कर रहा हूं लेकिन यह शून्य है। मेरे पास दो एंड्रॉइड डिवाइस हैं जहां डिवाइस 1 सर्वर है और डिवाइस 2 क्लाइंट है।होस्ट NsdManager की NsdServiceInfo में शून्य है। DiscoveryListener.onServiceFound
इस तरह मैं डिवाइस 1
public void registerService(int port, InetAddress myIp) {
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setPort(port);
serviceInfo.setServiceName(this.serviceName);
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setHost(myIp);
this.nsdManager.registerService(
serviceInfo, NsdManager.PROTOCOL_DNS_SD, registrationListener);
}
में सर्वर रजिस्टर और यह मैं कैसे DiscoveryListener
public void initializeDiscoveryListener() {
discoveryListener = new NsdManager.DiscoveryListener() {
@Override
public void onServiceFound(NsdServiceInfo service) {
Log.d(TAG, "Service discovery success" + service);
if (!service.getServiceType().equals(SERVICE_TYPE)) {
Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
} else if (service.getHost() == myIp) {
Log.d(TAG, "Same machine: " + service.getHost());
} else if (service.getServiceName().contains(serviceName)){
nsdManager.resolveService(service, resolveListener);
}
}
...
}
}
लेकिन service.getHost() रिटर्न अशक्त प्रारंभ है।
कोई सुझाव?
Android में नमूना कोड पुराना है, उन्हें आपके कोड परिवर्तन के बाद कोड अपडेट करना चाहिए। : डी – mxi1
दुर्भाग्य से, resolService (...) बिल्कुल काम नहीं करता है। .onServiceDiscovered() प्राप्त करते समय, एक ".local" हमेशा प्रोटोकॉल टाइप में (NsdManager!) जोड़ा जाएगा, हालांकि यह ".local" संकल्प सेवा() को भ्रमित करता है। अज्ञात त्रुटि परिणाम है। यदि .local हटा दिया गया है, तो पहले कॉल में (हमेशा नए Resolvelistener) से कोई कॉलबैक प्राप्त नहीं होता है, जबकि दूसरा कॉल त्रुटि NsdManager देता है। FAILURE_ALREADY_ACTIVE: // = 3। लेकिन चूंकि यह प्रत्येक कॉल पर बनाया गया एक नया उदाहरण है, यह अर्थहीन है, जब तक कि सिंगलटन तंत्र यहां छिपी न हो। गहराई से परेशान अपरिपक्वता। – carl
मैं जोड़ सकता हूं कि कई संकल्प कॉल करने का कारण यह है कि स्थानीय नेटवर्क पर एक से अधिक सेवा की खोज की जाती है। – carl