changeset 189:545183e14d4e

add GetBroadCast.java
author Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Nov 2011 13:58:58 +0900
parents d69a89f6d14a
children 79046b4e5990
files src/myVncProxy/GetBroadCast.java
diffstat 1 files changed, 85 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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;
+	}
+
+}