Mercurial > hg > Members > riono > TreeVNC_ja_comment
view src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java @ 69:21108e863b8a
update client list.
author | one |
---|---|
date | Tue, 11 Mar 2014 15:29:52 +0900 |
parents | e6550afe663b |
children | fc984746f958 |
line wrap: on
line source
package jp.ac.u_ryukyu.treevnc.server; import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import java.net.SocketAddress; import java.net.UnknownHostException; //import TextBoxProxy; public class GetBroadCastProxy implements Runnable { static final String McastAddr = "224.0.0.1"; static final int Port = 8183; static final int BufSize = 1024; private ByteArrayInputStream inputStream; private boolean stopFlag = false; private VncProxyService vps; private BroadCastProxy bCast; private String address; private String str = "who"; private MulticastSocket soc; public GetBroadCastProxy(VncProxyService _vps,String desktopName,String host){ vps = _vps; bCast = new BroadCastProxy(vps.getRfb().getAcceptPort()+":"+host+":" +desktopName+":"+getMyAddress()+":"); } private synchronized void getData() { byte[] buf = new byte[BufSize]; byte[] resorve = new byte[BufSize]; try { InetAddress mAddr = InetAddress.getByName(McastAddr); soc = new MulticastSocket(Port); DatagramPacket recvPacket = new DatagramPacket(buf, BufSize); soc.joinGroup(mAddr); while (!stopFlag) { soc.receive(recvPacket); address = getAddress(recvPacket.getSocketAddress()); inputStream = new ByteArrayInputStream(recvPacket.getData()); inputStream.read(resorve); if(str.equals(castString(resorve))){ replyBroadCast(); } if(stopFlag) break; } } catch (IOException e) { e.printStackTrace(); } } private void replyBroadCast() { Runnable sender = new Runnable() { public void run() { bCast.createSocket(address); } }; new Thread(sender).start(); } private String getAddress(SocketAddress addr) { String str = addr.toString(); str = str.substring(1,str.indexOf(":")); return str; } private String castString(byte[] a) { String recover = new String(a); recover = recover.replace("������n", ""); recover = recover.trim(); return recover; } public void run() { getData(); } public void setStopFlag(boolean stopFlag) { this.stopFlag = stopFlag; } public boolean isStopFlag() { return stopFlag; } String getMyAddress () { InetAddress addr = null; try { addr = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } return new String(addr.getHostAddress()); } }