///Copyright 2003-2005 Arthur van Hoff, Rick Blair //Licensed under Apache License version 2.0 //Original license LGPL package javax.jmdns; import java.io.IOException; import java.net.InetAddress; import javax.jmdns.impl.JmDNSImpl; /** * mDNS implementation in Java. * * @version %I%, %G% * @author Arthur van Hoff, Rick Blair, Jeff Sonstein, * Werner Randelshofer, Pierre Frisch, Scott Lewis, Scott Cytacki */ public abstract class JmDNS { /** * The version of JmDNS. */ public static String VERSION = "2.0"; /** * Create an instance of JmDNS. */ public static JmDNS create() throws IOException { return new JmDNSImpl(); } /** * Create an instance of JmDNS and bind it to a * specific network interface given its IP-address. */ public static JmDNS create(InetAddress addr) throws IOException { return new JmDNSImpl(addr); } /** * Return the HostName associated with this JmDNS instance. * Note: May not be the same as what started. The host name is subject to * negotiation. */ public abstract String getHostName(); /** * Return the address of the interface to which this instance of JmDNS is * bound. */ public abstract InetAddress getInterface() throws IOException; /** * Get service information. If the information is not cached, the method * will block until updated information is received. * <p> * Usage note: Do not call this method from the AWT event dispatcher thread. * You will make the user interface unresponsive. * * @param type fully qualified service type, such as <code>_http._tcp.local.</code> . * @param name unqualified service name, such as <code>foobar</code> . * @return null if the service information cannot be obtained */ public abstract ServiceInfo getServiceInfo(String type, String name); /** * Get service information. If the information is not cached, the method * will block for the given timeout until updated information is received. * <p> * Usage note: If you call this method from the AWT event dispatcher thread, * use a small timeout, or you will make the user interface unresponsive. * * @param type full qualified service type, such as <code>_http._tcp.local.</code> . * @param name unqualified service name, such as <code>foobar</code> . * @param timeout timeout in milliseconds * @return null if the service information cannot be obtained */ public abstract ServiceInfo getServiceInfo(String type, String name, int timeout); /** * Request service information. The information about the service is * requested and the ServiceListener.resolveService method is called as soon * as it is available. * <p> * Usage note: Do not call this method from the AWT event dispatcher thread. * You will make the user interface unresponsive. * * @param type full qualified service type, such as <code>_http._tcp.local.</code> . * @param name unqualified service name, such as <code>foobar</code> . */ public abstract void requestServiceInfo(String type, String name); /** * Request service information. The information about the service is requested * and the ServiceListener.resolveService method is called as soon as it is available. * * @param type full qualified service type, such as <code>_http._tcp.local.</code> . * @param name unqualified service name, such as <code>foobar</code> . * @param timeout timeout in milliseconds */ public abstract void requestServiceInfo(String type, String name, int timeout); /** * Listen for service types. * * @param listener listener for service types */ public abstract void addServiceTypeListener(ServiceTypeListener listener) throws IOException; /** * Remove listener for service types. * * @param listener listener for service types */ public abstract void removeServiceTypeListener(ServiceTypeListener listener); /** * Listen for services of a given type. The type has to be a fully qualified * type name such as <code>_http._tcp.local.</code>. * * @param type full qualified service type, such as <code>_http._tcp.local.</code>. * @param listener listener for service updates */ public abstract void addServiceListener(String type, ServiceListener listener); /** * Remove listener for services of a given type. * * @param listener listener for service updates */ public abstract void removeServiceListener(String type, ServiceListener listener); /** * Register a service. The service is registered for access by other jmdns clients. * The name of the service may be changed to make it unique. */ public abstract void registerService(ServiceInfo info) throws IOException; /** * Unregister a service. The service should have been registered. */ public abstract void unregisterService(ServiceInfo info); /** * Unregister all services. */ public abstract void unregisterAllServices(); /** * Register a service type. If this service type was not already known, * all service listeners will be notified of the new service type. Service types * are automatically registered as they are discovered. */ public abstract void registerServiceType(String type); /** * Close down jmdns. Release all resources and unregister all services. */ public abstract void close(); /** * List Services and serviceTypes. * Debugging Only */ public abstract void printServices(); /** * Returns a list of service infos of the specified type. * * @param type Service type name, such as <code>_http._tcp.local.</code>. * @return An array of service instance names. */ public abstract ServiceInfo[] list(String type); }