# HG changeset patch # User Yu Taninari # Date 1321937938 -32400 # Node ID 545183e14d4e33ca9887cb04ca4fc059ba19e011 # Parent d69a89f6d14ae60dd547b717e2bf8ac685663097 add GetBroadCast.java diff -r d69a89f6d14a -r 545183e14d4e src/myVncProxy/GetBroadCast.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/myVncProxy/GetBroadCast.java Tue Nov 22 13:58:58 2011 +0900 @@ -0,0 +1,85 @@ +package myVncProxy; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.InetAddress; +import java.net.MulticastSocket; + +import myVncProxy.TextBox; + +public class GetBroadCast implements Runnable { + static final String McastAddr = "224.0.0.1"; + static final int Port = 8183; + static final int BufSize = 1024; + private byte[] buf = new byte[BufSize]; + private byte[] resorve = new byte[BufSize]; + private ByteArrayInputStream inputStream; + private boolean stopFlag = false; + private VncProxyService vps; + private BroadCast bCast; + + public GetBroadCast(VncProxyService _vps){ + vps = _vps; + bCast = new BroadCast(vps.rfb.acceptPort+"*"+vps.host+"*" + +vps.rfb.desktopName+"*"+vps.acc.getMyAddress()+"*"); + } + + private void getData() { + try { + InetAddress mAddr = InetAddress.getByName(McastAddr); + MulticastSocket soc = new MulticastSocket(Port); + DatagramPacket recvPacket = new DatagramPacket(buf, BufSize); + soc.joinGroup(mAddr); + bCast.createSocket(); + while (true) { + soc.receive(recvPacket); + inputStream = new ByteArrayInputStream(recvPacket.getData()); + inputStream.read(resorve); + if("who".equals(castString(resorve))){ + for(int i=0;i<4;i++){ + bCast.sendData(); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private int castInt(byte[] a) { + int value = 0; + ByteArrayInputStream bais = new ByteArrayInputStream(a); + DataInputStream dis = new DataInputStream(bais); + try { + value = dis.readInt(); + } catch (IOException e) { + } + System.out.println(value); + return value; + } + + private String castString(byte[] a) { + String recover = new String(a); + recover = recover.replace("¥n", ""); + recover = recover.trim(); + System.out.println(recover); + return recover; + } + + + @Override + public void run() { + getData(); + } + + public void setStopFlag(boolean stopFlag) { + this.stopFlag = stopFlag; + } + + public boolean isStopFlag() { + return stopFlag; + } + +}