changeset 187:e7cc8bcf261d

add broadcast.java
author one
date Tue, 15 Nov 2011 19:55:30 +0900
parents 00e031baf065
children d69a89f6d14a
files src/myVncProxy/AcceptClient.java src/myVncProxy/BroadCast.java src/myVncProxy/MyRfbProto.java src/myVncProxy/VncProxyService.java
diffstat 4 files changed, 87 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/AcceptClient.java	Mon Nov 07 12:48:16 2011 +0900
+++ b/src/myVncProxy/AcceptClient.java	Tue Nov 15 19:55:30 2011 +0900
@@ -53,11 +53,10 @@
 					//lost time send to not leader children
 					replyNormalChildren(os, is, port);
 					line = null;
-				} else {
+				} else if (line!=null){
 					//connection First time
 					if(checkAddress(line)){
-						outputStream(os, ls.getFirst(),"0",
-								"0", "0");
+						outputStream(os, ls.getFirst(),"0","0", "0");
 					}else {
 						if(replyCreateTree(os, port, line)) {
 							break;
@@ -137,8 +136,13 @@
 		}
 	}
 	
-	private String getMyAddress () throws UnknownHostException {
-		InetAddress addr = InetAddress.getLocalHost();
+	String getMyAddress () {
+		InetAddress addr = null;
+		try {
+			addr = InetAddress.getLocalHost();
+		} catch (UnknownHostException e) {
+			e.printStackTrace();
+		}
 		return new String(addr.getHostAddress());
 	}
 	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/myVncProxy/BroadCast.java	Tue Nov 15 19:55:30 2011 +0900
@@ -0,0 +1,59 @@
+package myVncProxy;
+
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.InetAddress;
+import java.net.MulticastSocket;
+import java.net.UnknownHostException;
+
+public class BroadCast implements Runnable {
+	final int BUFSIZE = 1024;
+	final String MCASTADDR = "224.0.0.1";
+	final int PORT = 8182;
+	private byte[] buf = new byte[BUFSIZE];
+	private InetAddress mAddr;
+	private MulticastSocket soc;
+	private String str;
+	
+	public BroadCast(String _str) {
+		str = _str;
+	}
+
+	private void createSocket() throws IOException {
+		mAddr = InetAddress.getByName(MCASTADDR);
+		soc = new MulticastSocket();
+		soc.setTimeToLive(1);
+	}
+
+	private void sendData() {
+		buf = str.getBytes();
+		//System.out.println("strlen"+str.length());
+		//System.out.println("str"+str);
+		DatagramPacket sendPacket = new DatagramPacket(buf, str.length(),
+				mAddr, PORT);
+		try {
+			soc.send(sendPacket);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void run() {
+		try {
+			createSocket();
+			while (true) {
+				sendData();
+				try {
+					Thread.sleep(2000);
+				} catch (InterruptedException e) {
+					System.out.println(e);
+				}
+			}
+		} catch (UnknownHostException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+}
--- a/src/myVncProxy/MyRfbProto.java	Mon Nov 07 12:48:16 2011 +0900
+++ b/src/myVncProxy/MyRfbProto.java	Tue Nov 15 19:55:30 2011 +0900
@@ -516,12 +516,13 @@
 	}
 
 	void printFramebufferUpdate() {
-
+		/*
 		System.out.println("messageType=" + messageType);
 		System.out.println("rectangles=" + rectangles);
 		System.out.println("encoding=" + encoding);
 		System.out.println("rectX = "+rectX+": rectY = "+rectY);
 		System.out.println("rectW = "+rectW+": rectH = "+rectH);
+		*/
 		switch (encoding) {
 		case RfbProto.EncodingRaw:
 			System.out.println("rectW * rectH * 4 + 16 =" + rectW * rectH * 4
--- a/src/myVncProxy/VncProxyService.java	Mon Nov 07 12:48:16 2011 +0900
+++ b/src/myVncProxy/VncProxyService.java	Tue Nov 15 19:55:30 2011 +0900
@@ -30,10 +30,12 @@
 	Thread rfbThread;
 	Thread accThread;
 	Thread clientThread;
+	private Thread bCast;
 	CreateThread geth;
 	AcceptClient acc;
 	private AcceptThread acceptThread;
 	private TextBox getHost;
+	private BroadCast broadCast;
 
 	Frame vncFrame;
 	Container vncContainer;
@@ -160,6 +162,10 @@
 			rfbThread = new Thread(this);
 			acceptThread = new AcceptThread(rfb, 5999);
 			accThread = new Thread(acceptThread);
+			broadCast = new  BroadCast(rfb.acceptPort+"*"+host+"*"
+					+rfb.desktopName+"*"+acc.getMyAddress()+"*");
+			bCast = new Thread(broadCast);
+			//broadCast.udpTransmission(rfb.acceptPort+"-"+host+"-"+rfb.desktopName);
 		//}
 		/*
 		 * if(url != null) { try { client = new XmlRpc(blogId, wpUsername,
@@ -180,7 +186,7 @@
 	public void changeInit() throws Exception {
 		VncProxyService v = new VncProxyService();
 		v.changeFlag = true;
-		// v.checkArgs(argv);
+		//v.checkArgs(argv);
 
 		v.mainArgs = new String[0];
 		v.host = host;
@@ -188,7 +194,7 @@
 		v.start_threads();
 		
 		//Thread.sleep(10000);
-		rfb.is = v.rfb.is;
+		//rfb.is = v.rfb.is;
 		//rfb.os = v.rfb.os;
 		//rfb.initData = v.rfb.initData;
 	
@@ -241,6 +247,7 @@
 	public void start_threads() {
 		rfbThread.start();
 		accThread.start();
+		bCast.start();
 		rfb.requestThreadStart();
 	}
 
@@ -441,8 +448,8 @@
 		default:
 			throw new Exception("Unknown authentication scheme " + authType);
 		}
-		rfb.is = testrfb.is;
-		rfb.os = testrfb.os;
+		//rfb.is = testrfb.is;
+		//rfb.os = testrfb.os;
 		//rfb = testrfb;
 	}
 
@@ -741,8 +748,12 @@
 			getHost = new TextBox(this);
 			port = 5900;
 		}
-		
-		//getHost.changeHost();
+		if(getHost==null){
+			getHost = new TextBox(this);
+			getHost.changeHost();
+		} else {	
+			getHost.changeHost();
+		} 
 
 		// Read "ENCPASSWORD" or "PASSWORD" parameter if specified.
 		// readPasswordParameters();