ResolveListener resolveListener = new ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo nsdServiceInfo, int errorCode) { Log.e(Constants.TAG, "Resolve failed: " + errorCode); } @Override public void onServiceResolved(NsdServiceInfo nsdServiceInfo) { Log.i(Constants.TAG, "Resolve succeeded: " + nsdServiceInfo); if (nsdServiceInfo.getServiceName().equals(serviceName)) { Log.i(Constants.TAG, "The service running on the same machine has been discovered."); return; } String host = nsdServiceInfo.getHost().toString(); if(host.startsWith("/")) { host = host.substring(1); } int port = nsdServiceInfo.getPort(); ArrayList discoveredServices = chatActivity.getDiscoveredServices(); NetworkService networkService = new NetworkService(nsdServiceInfo.getServiceName(), host, port, Constants.CONVERSATION_TO_SERVER); if (!discoveredServices.contains(networkService)) { discoveredServices.add(networkService); chatActivity.setDiscoveredServices(discoveredServices); } Log.i(Constants.TAG, "A service has been discovered on " + host + ":" + port); } };