私の目標は、WIFI ネットワーク内のすべての bonjour サービスを見つけ、その IP/ポートを見つけ、HTTP 経由で通信することです。
iMac でホストされている Bonjour サービスが正しく検出されない - サービス名は見つかったが、ポート = 0、InetAddress[] = null。Windows PC でホストされている同じサービスへの接続は正常に機能しています (あるベンダーの同じバージョンのソフトウェア) - 名前、URL、およびポートが正しく検出されました。Bonjour サービス ブラウザは両方のサービスを正しく認識します。
JmDNS 3.4.0 lib が使用されています。コード例を参照してください (一部のコードは省略されています)。
MulticastLock lock = wifi.createMulticastLock(MULTICAST_LOCK_TAG);
lock.setReferenceCounted(true);
lock.acquire();
final InetAddress inetAddress = getLocalIpAddress();
jmdns = JmDNS.create(inetAddress, JMDNS_NAME);
ServiceInfo[] infos = jmdns.list(CAMERA_SERVERS);
if (infos != null && infos.length > 0) {
for (int i = 0; i < infos.length; i++) {
name = infos[i].getName();
InetAddress[] addresses = infos[i].getInetAddresses();
url = addresses[0].getHostAddress();
port = infos[i].getPort();
}
PS。Apple のdns_sd.jarを試してみましたが、ネイティブ コードに依存しており、Android では使用できません。
何か案は?
ありがとう。