Sono riuscito a compilare ed eseguire gli esempi forniti con JmDNS, tuttavia non riesco a ottenere nessuna delle classi per scoprire i miei servizi.Esempi con JmDNS
Sono in esecuzione un ambiente Windows con più di PC con VNC, SSH & Apache e ho cercato di ottenere JmDNS alla scoperta di almeno uno di questi ...
Quello che voglio è in posizione ideale per essere in grado di rilevare tutti i server VNC in esecuzione sulla mia rete. Esiste una sorta di accoppiamento client e server in cui posso scoprire un servizio solo se l'ho registrato utilizzando JmDNS?
Qualsiasi aiuto per ottenere risultati dai campioni sarà apprezzato, la documentazione non è di grande aiuto.
import java.io.IOException;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jmdns.JmDNS;
import javax.jmdns.ServiceEvent;
import javax.jmdns.ServiceListener;
/**
* Sample Code for Service Discovery using JmDNS and a ServiceListener.
* <p>
* Run the main method of this class. It listens for HTTP services and lists all changes on System.out.
*
* @author Werner Randelshofer
*/
public class DiscoverServices {
static class SampleListener implements ServiceListener {
@Override
public void serviceAdded(ServiceEvent event) {
System.out.println("Service added : " + event.getName() + "." + event.getType());
}
@Override
public void serviceRemoved(ServiceEvent event) {
System.out.println("Service removed : " + event.getName() + "." + event.getType());
}
@Override
public void serviceResolved(ServiceEvent event) {
System.out.println("Service resolved: " + event.getInfo());
}
}
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
try {
// Activate these lines to see log messages of JmDNS
boolean log = false;
if (log) {
Logger logger = Logger.getLogger(JmDNS.class.getName());
ConsoleHandler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.setLevel(Level.FINER);
handler.setLevel(Level.FINER);
}
final JmDNS jmdns = JmDNS.create();
String type = "_http._tcp.local.";
if(args.length > 0) {
type = args[0];
}
jmdns.addServiceListener(type, new SampleListener());
System.out.println("Press q and Enter, to quit");
int b;
while ((b = System.in.read()) != -1 && (char) b != 'q') {
/* Stub */
}
jmdns.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
JmDNS da solo non funziona in generale, si dovrebbe davvero farlo su tutte le schede di rete utilizzando un NetworkTopologyListener. JmmDNS dovrebbe farlo per te ma non ha funzionato per me. –
@ErikMartino-puoi dare un esempio di NetworkTopologyListener che ha fatto worK? –