嗨我創建了示例jmdns serviceListner,當我運行它時,它應該繼續列出服務,因爲它發現,但與此我的程序,它列出幾個服務運行時,之後它沒有列出任何服務。我在我的谷歌Chrome瀏覽器中有dns-sd,所以當我在Chrome中瀏覽服務時,當時我的程序列出了其他服務,否則我的程序不會列出服務。我不明白爲什麼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());
}
}
爲什麼你綁定到每個單獨的接口? – 2012-04-25 19:00:59
因爲我在PC上運行它所以,以確保它可以接受形式的所有接口,也嘗試沒有綁定到接口但結果是一樣的,所以我沒有得到什麼問題,而令人驚訝的是,當我從鉻瀏覽dns-sd運行上面的代碼開始列出剩餘服務。 – twid 2012-04-26 09:27:18
0.0.0.0接口應該監聽所有接口。 – 2012-04-26 10:31:08