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