Revision: 34997
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 1, 2010 03:26 by kubaitis
Initial Code
import javax.jmdns.JmDNS; import javax.jmdns.ServiceInfo; import java.io.IOException; import java.util.ArrayList; import java.util.Hashtable; public class mDNSAgent extends Thread { public mDNSAgent(){ this.mdnsType = "_myservice._tcp.local."; this.mdnsName = "MyService"; try{jmdns = JmDNS.create();}catch(Exception e){e.printStackTrace();System.exit(1);} running = false; paused=false; waitInterval=500L; status="initialized"; servers = new ArrayList<ServerInfo>(); } public mDNSAgent(final String mdnsType,final String mdnsName){ this.mdnsType = mdnsType; this.mdnsName = mdnsName; try{jmdns = JmDNS.create();}catch(Exception e){e.printStackTrace();System.exit(1);} running = false; paused=false; waitInterval=500L; status="initialized"; servers = new ArrayList<ServerInfo>(); } private boolean running; private boolean paused; private JmDNS jmdns; private long waitInterval; private String mdnsName; private String mdnsType; private String status; private ArrayList<ServerInfo> servers; public ArrayList<ServerInfo> getServers(){return servers;} public boolean isRunning(){return running;} public boolean isPaused(){return paused;} public void stopService(){running=false;paused=false;} public void pauseService(){paused=true;} public void resumeService(){paused=false;} public void setWaitInterval(long input){waitInterval=input;} public void setStatus(String input){status=input;} public long getWaitInterval(){return waitInterval;} public String getMdnsName(){return mdnsName;} public String getMdnsType(){return mdnsType;} public String getStatus(){return status;} public static final void sleep(long millis){try{Thread.sleep(millis);}catch(Exception e){}} public void checkPause(){while(isRunning()&&isPaused()){sleep(waitInterval);}} public void register(final String hostName,final Integer webServerPort){ Hashtable<String,String> settings = new Hashtable<String,String>(); settings.put("host", hostName); settings.put("web_port", webServerPort.toString()); settings.put("secure_web_port", webServerPort.toString()); try { ServiceInfo info = ServiceInfo.create(mdnsType, mdnsName, webServerPort,1,1,settings); jmdns.registerService(info); }catch(IOException e){e.printStackTrace();} } public void run(){ while (isRunning()) { checkPause(); ServiceInfo[] infos = jmdns.list(mdnsType); if(infos!=null&&infos.length>0){ ArrayList<ServerInfo> temp = new ArrayList<ServerInfo>(); for (int i=0; i < infos.length; i++) { temp.add(new ServerInfo(infos[i].getName(),infos[i].getPropertyString("host"),Integer.valueOf(infos[i].getPropertyString("web_port")),Integer.valueOf(infos[i].getPropertyString("secure_web_port")))); } servers = temp; try {Thread.sleep(waitInterval);}catch(InterruptedException e){break;} } } } }
Initial URL
Initial Description
Requires jmdns.jar from http://sourceforge.net/projects/jmdns/
Initial Title
Register and Monitor mDNS Services : Zeroconf
Initial Tags
Initial Language
Java