こんにちは私はサンプルjmdns serviceListnerを作成しました。私はそれを実行すると、それが見つかるとサービスを一覧表示する必要がありますが、このプログラムでは、サービスは表示されません。そして、私はGoogleのクロムブラウザでdns-sdを持っているので、クロムでサービスをブラウズすると、その時に私のプログラムリストの他のサービス、そうでなければ私のプログラムはサービスをリストしません。 ServiceListner自体が後続のイベントを検出しない理由はわかりません。JMdns ServiceListnerがすべてのサービスを見つけられません
public static void main(String[] args) throws Exception {
String type = "_my-app._tcp.local.";
Enumeration<NetworkInterface> ifc = NetworkInterface.getNetworkInterfaces();
while (ifc.hasMoreElements()) {
NetworkInterface anInterface = ifc.nextElement();
if (anInterface.isUp()) {
Enumeration<InetAddress> addr = anInterface.getInetAddresses();
while (addr.hasMoreElements()) {
InetAddress address = addr.nextElement();
final JmDNS jmdns = JmDNS.create(address, type);
ServiceListenerClass aClass = new ServiceListenerClass();
jmdns.addServiceListener(type, aClass);
}
}
}
}
public static class ServiceListenerClass implements ServiceListener {
public void serviceAdded(ServiceEvent event) {
event.getDNS().requestServiceInfo(event.getType(), event.getName(), true);
}
public void serviceRemoved(ServiceEvent event) {
System.out.println((count--) + " " + event.getInfo().getName());
}
public void serviceResolved(ServiceEvent event) {
System.out.println((count++) + " :Res: " + event.getInfo().getName() + " " + event.getInfo().getPort() + " " + event.getInfo().getApplication()
+ " " + event.getInfo().getDomain() + " " + event.getInfo().getKey());
}
}
なぜ個々のインターフェイスにバインドしますか? –
以来、PC上で実行しているので、すべてのフォームを受信することができることを確認するには、また、インターフェイスにバインドせずに試してみましたしかし、結果は同じだったので、私は問題を取得しないと驚くほど私はクロムからdns-上記のコードを実行すると残りのサービスが一覧表示されます。 – twid
0.0.0.0インターフェイスはすべてのインターフェイスをリッスンする必要があります。 –