Mercurial > hg > Applications > TreeVNC
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; }