0
NSDManagerクラスを使用してサービスのリストを検出するには、Google参照でコードを実装しましたが、サービスを検出しようとするとホストアドレスを取得できません。ディスカバリが開始されたときにnullを表示しています。私が参照したthis link同じネットワークに接続されたデバイスのリストを発見するために私はthis blogに続いて、同じネットワークに接続したときにすべてのサービスを取得しました。NSDでネットワークサービス情報を使用しているときにnullを表示
同じネットワークに接続されているサービス/デバイスのリストを取得するのは正しいですか?
を示しpublic void registerService(int port) {
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setServiceName(SERVICE_NAME);
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setPort(port);
nsdManager.registerService(serviceInfo,
NsdManager.PROTOCOL_DNS_SD,
registrationListener);
}
私の決意リスナー
public void initializeResolveListener() {
mResolveListener = new NsdManager.ResolveListener() {
@Override
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
Log.e(TAG, "Resolve failed" + errorCode);
}
@Override
public void onServiceResolved(NsdServiceInfo serviceInfo) {
Log.v(TAG, "Resolve Succeeded. " + serviceInfo);
if (serviceInfo.getServiceName().equals(mService)) {
Log.d(TAG, "Same IP.");
return;
}
mService = serviceInfo;
int port = mService.getPort();
InetAddress host = mService.getHost(); }
};
}
でリスト
登録されているサービスを発見するために、次のコードを試してみました
特定のデバイスのポート番号とIPアドレスを取得できましたが、他のデバイスが見つかりませんでした... – Rognik