diff src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java @ 82:cc72fdbb7c72

on going ...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 30 Apr 2014 17:45:45 +0900
parents f93d0286c2ab
children 40d400a7ec84
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java	Wed Apr 30 17:11:15 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java	Wed Apr 30 17:45:45 2014 +0900
@@ -10,6 +10,8 @@
 import java.net.SocketAddress;
 import java.net.UnknownHostException;
 
+import com.glavsoft.viewer.swing.ConnectionParams;
+
 //import TextBoxProxy;
 
 public class GetBroadCastProxy implements Runnable {
@@ -36,23 +38,23 @@
 	 */
 	private void replyToRootSearchMulticast() {
 		byte[] buf = new byte[BufSize];
-		byte[] reply = new byte[BufSize];
 		try {
 			InetAddress mAddr = InetAddress.getByName(McastAddr);
-			soc = new MulticastSocket(Port);
+			soc = new MulticastSocket(ConnectionParams.DEFAULT_VNC_ROOT_FINDER);
 			DatagramPacket recvPacket = new DatagramPacket(buf, BufSize);
 			soc.joinGroup(mAddr);
 			while (!stopFlag) {
 				soc.receive(recvPacket);
 				String address = getAddress(recvPacket.getSocketAddress());
-				inputStream = new ByteArrayInputStream(recvPacket.getData());
-				inputStream.read(reply);
+		        byte[] reply = recvPacket.getData();
+				int len = recvPacket.getLength();
 				int i = 0;
 				for(byte b : MULTICAST_FIND_TREEVNC_ROOT.getBytes()) {
 				    if (b != reply[i]) return;
 				    i++;
+				    if (i>len) return;
 				}
-				int port = parse_code(reply,i);
+				int port = parse_code(reply,i,len);
 				replyToClient(address,port,bCast);
 				if(stopFlag) break;
 			}
@@ -61,11 +63,13 @@
 		}
 	}
 	
-	public int parse_code( byte[] bs,int offset )
+	public int parse_code( byte[] bs,int offset,int len )
 	{
 	    int intval = 0;
-	    for( int i = offset; i < bs.length ; i++ )
+	    for( int i = offset; i < len ; i++ ) {
+	        if  (bs[i]==0 ) return intval;
 	        intval = intval * 10 + ( bs[ i ] - '0' );
+	    }
 	    return intval;
 	}