Mercurial > hg > Members > nobuyasu > tightVNCProxy
view src/myVncProxy/GetBroadCast.java @ 191:b2f0cd0cff6c default tip
Added tag Version-1.0 for changeset 79046b4e5990
author | Yu Taninari <you@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 29 Nov 2011 15:52:44 +0900 |
parents | 545183e14d4e |
children |
line wrap: on
line source
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; } }