changeset 52:986f16afb753

update before change host.
author one
date Sat, 02 Nov 2013 17:55:10 +0900
parents eb34277a22ff
children 978261e2b396
files src/main/java/com/glavsoft/rfb/encoding/decoder/FramebufferUpdateRectangle.java src/main/java/com/glavsoft/rfb/protocol/Protocol.java src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java src/viewer_swing/java/com/glavsoft/viewer/ContainerManager.java src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java src/viewer_swing/java/com/glavsoft/viewer/Viewer.java
diffstat 15 files changed, 185 insertions(+), 81 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/encoding/decoder/FramebufferUpdateRectangle.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/FramebufferUpdateRectangle.java	Sat Nov 02 17:55:10 2013 +0900
@@ -43,7 +43,6 @@
 	public int width;
 	public int height;
     private EncodingType encodingType;
-    private boolean firstFlag=false;
 
 	public FramebufferUpdateRectangle() {
 		// nop
@@ -57,14 +56,8 @@
 	public void fill(Reader reader) throws TransportException {
     	x = reader.readUInt16();
         y = reader.readUInt16();
-        if(!firstFlag) {	
-        	width = reader.readUInt16()-2;
-        	height = reader.readUInt16()-2;
-        	firstFlag=true;
-        } else {
-        	width = reader.readUInt16();
-        	height = reader.readUInt16();
-        }
+        width = reader.readUInt16();
+        height = reader.readUInt16();
         int encoding = reader.readInt32();
 		encodingType = EncodingType.byId(encoding);
     }
--- a/src/main/java/com/glavsoft/rfb/protocol/Protocol.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/Protocol.java	Sat Nov 02 17:55:10 2013 +0900
@@ -265,7 +265,7 @@
 	@Override
 	public void sendRefreshMessage() {
 //	    sendMessage(new FramebufferUpdateRequestMessage(0, 0, fbWidth, fbHeight, false));
-		sendMessage(new FramebufferUpdateRequestMessage(0, 0, 1006, 506, false));
+		sendMessage(new FramebufferUpdateRequestMessage(0, 0, 1006, 506, true));
 		logger.fine("sent: full FB Refresh");
 	}
 
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Sat Nov 02 17:55:10 2013 +0900
@@ -86,7 +86,7 @@
 		renderer = repaintController.createRenderer(reader, context.getFbWidth(), context.getFbHeight(),
 				context.getPixelFormat());
 		fullscreenFbUpdateIncrementalRequest =
-			new FramebufferUpdateRequestMessage(0, 0, context.getFbWidth(), context.getFbHeight(), false);
+			new FramebufferUpdateRequestMessage(0, 0, context.getFbWidth(), context.getFbHeight(), true);
 	}
 	
 	@Override
@@ -125,6 +125,7 @@
 					EchoClient echo = rfb.getEcho();
 					echo.openport();
 					while(true) {
+						// after set time out. not counter. 
 						if(counter > 3) {
 							echo.notfoundParent();
 						}
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java	Sat Nov 02 17:55:10 2013 +0900
@@ -51,6 +51,7 @@
 	 * Instruction stop if you come from if WaitReply.
 	 * @return if return true. This Thread halt.
 	 */
+	/*
 	private boolean confirmHalt(InputStream is) throws IOException {
 		byte[] b = new byte[4];
 		is.mark(4);
@@ -59,4 +60,5 @@
 		is.reset();
 		return false;
 	}
+	*/
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Sat Nov 02 17:55:10 2013 +0900
@@ -3,7 +3,6 @@
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.net.Socket;
-import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.util.LinkedList;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -356,5 +355,10 @@
 	public void setProxyAddr(String proxyAddr) {
 		this.proxyAddr = proxyAddr;
 	}
+
+
+	public void close() {
+		//nothing
+	}
 	
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Sat Nov 02 17:55:10 2013 +0900
@@ -3,7 +3,6 @@
 import java.io.*;
 import java.net.*;
 
-
 import com.glavsoft.viewer.Viewer;
 
 public class EchoClient {
@@ -83,21 +82,18 @@
 					return true;
 				}
 				sendDataProxy();
-				String checkRepetition = getProxyData2(is);
-				if (checkRepetition.equals("stop")) {
-					return true;
-				}
-				if (!(waitReply.checkPath())) {
-					Thread.sleep(1000);
+//				String checkRepetition = getProxyData2(is);
+//			if (checkRepetition.equals("stop")) {
+//					return true;
+//				}
+//				if (!(waitReply.checkPath())) {
 					reConnectionMain(echoSocket);
 					streamClose();
-				}
+//				}
 			} catch (UnknownHostException e) {
 				System.err.println("Trying to connect to unknown host: " + e);
 			} catch (IOException e) {
 				return false;
-			} catch (InterruptedException e) {
-				e.printStackTrace();
 			} catch (NullPointerException e) {
 				openport();
 				System.out.println("notFoundParents");
@@ -155,16 +151,38 @@
 	}
 
 	String getProxyData2(BufferedReader is) throws IOException {
-		String checkRepetition;
-		System.out.println("-------------------re----------------------------");
-		if ((parentAddress = is.readLine()) != null) {
-			System.out.println("Server: " + parentAddress);
-		}
-		if ((parentNum = is.readLine()) != null) {
-			System.out.println("parent:test " + parentNum);
-		}
-		if ((checkRepetition = is.readLine()) != null) {
-			System.out.println("checkRepetition: " + checkRepetition);
+		String checkRepetition = null;
+		if (!("1".equals(leaderFlag))) {
+			ServerSocket waitReplyServer = new ServerSocket(9999);
+			Socket socketForWait = waitReplyServer.accept();
+			BufferedReader isNotLeader = new BufferedReader(new InputStreamReader(
+					socketForWait.getInputStream()));
+			System.out.println("-------------------renode----------------------------");
+			if ((parentAddress = isNotLeader.readLine()) != null) {
+				System.out.println("Server: " + parentAddress);
+			}
+			if ((parentNum = isNotLeader.readLine()) != null) {
+				System.out.println("parent:test " + parentNum);
+			}
+			if ((checkRepetition = isNotLeader.readLine()) != null) {
+				System.out.println("checkRepetition: " + checkRepetition);
+			}
+			try {
+				Thread.sleep(1000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		} else {
+			System.out.println("-------------------re----------------------------");
+			if ((parentAddress = is.readLine()) != null) {
+				System.out.println("Server: " + parentAddress);
+			}
+			if ((parentNum = is.readLine()) != null) {
+				System.out.println("parent:test " + parentNum);
+			}
+			if ((checkRepetition = is.readLine()) != null) {
+				System.out.println("checkRepetition: " + checkRepetition);
+			}
 		}
 		return checkRepetition;
 	}
@@ -173,7 +191,8 @@
 		while (true) {
 			try {
 				client.close();
-				client.setSocket(createSocketForClient(echoSocket));
+				// set Socket for connection in VncViewer.
+				client.setSocket(createSocketForClient(echoSocket,false));
 				client.run();
 				break;
 			} catch (IOException e) {
@@ -193,8 +212,8 @@
 			sendDataProxy("1", parentNum, treeNum);
 			System.out.println("---------------------------------------------");
 		} else {
-			sendDataProxy("3", parentNum, treeNum);
-			System.out.println("---------------------------------------------");
+			// sendDataProxy("3", parentNum, treeNum);
+			// System.out.println("---------------------------------------------");
 		}
 	}
 
@@ -228,36 +247,62 @@
 	public void setViewer(Viewer v) {
 		client = v;
 	}
-	
+
 	public String getMyAddress() {
 		return myAddress;
 	}
 
-	public Socket createSocketForClient(Socket soc) throws IOException {
-		BufferedReader is = new BufferedReader(new InputStreamReader(
-				soc.getInputStream()));
-		int count=0;
-		String tempParentAddress = is.readLine();
-		parentNum = is.readLine();
+	// create scoket for ReConnection.
+	public Socket createSocketForClient(Socket soc,boolean flag) throws IOException {
+		Socket socket  = null;
+		String parentAddress;
+//		int count = 0; 
+		if("1".equals(leaderFlag)||flag) { // leader only
+			BufferedReader is = new BufferedReader(new InputStreamReader(
+					soc.getInputStream()));
+			parentAddress = is.readLine();
+			is.readLine();// parentNum
+		} else { // other client
+			ServerSocket waitReplyServer = new ServerSocket(9999);
+			Socket socketForWait = waitReplyServer.accept();
+			BufferedReader isNotLeader = new BufferedReader(new InputStreamReader(
+					socketForWait.getInputStream()));
+			System.out.println("-------------------renode----------------------------");
+			parentAddress = isNotLeader.readLine();
+			if ((parentNum = isNotLeader.readLine()) != null) {
+				System.out.println("parent:test " + parentNum);
+			}
+				isNotLeader.readLine();
+		}
+		socket = new Socket(parentAddress, 5999);
+		socket.setReuseAddress(true);
+		/*
+		//String tempParentAddress = is.readLine();
+		//is.readLine();// parentNum
 		if ("reconnection".equals(tempParentAddress)) {
 			System.out.println("-----------------into function \n" + parentNum);
-			while(true)
-				try{
-					return new Socket(parentAddress, Integer.parseInt(parentNum));
-				} catch(IOException e) {
+			while (true)
+				try {
+					return new Socket(parentAddress,
+							Integer.parseInt(parentNum));
+				} catch (IOException e) {
 					try {
 						Thread.sleep(1000);
 					} catch (InterruptedException e1) {
 						e1.printStackTrace();
 					}
-					if(count++ > 5) break;
+					if (count++ > 5)
+						break;
 					continue;
 				}
 		}
-		treeNum = is.readLine();
-		leaderFlag = is.readLine();
-		return new Socket(tempParentAddress, 5999);
+		//is.readLine();// treeNum
+		//is.readLine();// leaderFlag
+		 */
+		 
+		return socket;
 	}
+
 	public String getParentsAddress() {
 		return parentAddress;
 	}
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java	Sat Nov 02 17:55:10 2013 +0900
@@ -73,6 +73,7 @@
 
 	@Override
 	public Socket accept() throws IOException {
+		servSock.setReuseAddress(true);
 		return servSock.accept();
 	}
 
@@ -86,6 +87,7 @@
 		int port = p;
 		while (true) {
 			try {
+//				Thread.sleep(1000);
 				initServSock(port);
 				break;
 			} catch (BindException e) {
@@ -373,5 +375,16 @@
 	public boolean getTerminationType() {
 		return normalTermination;
 	}
+	
+	@Override
+	public void close() {
+		try {
+			servSock.close();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	
 
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Sat Nov 02 17:55:10 2013 +0900
@@ -22,7 +22,6 @@
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	boolean isClient = false;
 	public static final int DEFAULT_PORT = 5900;
 	public static Logger logger = Logger.getLogger("com.glavsoft");
 	private ConnectionParams connectionParams;
@@ -36,6 +35,7 @@
 		settings = ProtocolSettings.getDefaultSettings();
 		uiSettings = super.uiSettings;
 		treeConnectionManager = new TreeConnectionManager(this, isApplet);
+		setIsClient(true);
 	}
 	
 	public MyVncClient(Parser parser) {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java	Sat Nov 02 17:55:10 2013 +0900
@@ -1,7 +1,7 @@
 package jp.ac.u_ryukyu.treevnc.client;
 
+import java.io.DataOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
 import java.net.BindException;
 import java.net.ServerSocket;
 import java.net.Socket;
@@ -23,6 +23,11 @@
 		return passflag;
 	}
 	
+	private void reportConnectionFinished(Socket soc) throws IOException {
+		DataOutputStream os = new DataOutputStream(soc.getOutputStream());
+		os.writeBytes("finished");
+	}
+	
 	public void run() {
 		Socket clientSocket = null;
 		ServerSocket echoServer = null;
@@ -35,12 +40,14 @@
 					echo.client.stopTask();
 					echo.client.close();
 					passflag = true;
-					System.out.println("------waitreply");
-					echo.client.setSocket(echo.createSocketForClient(clientSocket));
-					// hult();
-					// client.init();
+					echo.client.setSocket(echo.createSocketForClient(clientSocket,true));
+					//client.init();
 					echo.client.run();
 					echoServer.close();
+					//report finished connection at server.
+					reportConnectionFinished(clientSocket);
+					clientSocket.close();
+
 				}
 			} catch (BindException e) {
 				break;
@@ -51,10 +58,12 @@
 		}
 	}
 	
+	/*
 	private void hult() throws IOException {
 		Socket socket = new Socket("localhsot",	echo.client.getPort());
 		OutputStream stream = socket.getOutputStream();
 		stream.write("halt".getBytes());
 		stream.flush();
 	}
+	*/
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java	Sat Nov 02 17:55:10 2013 +0900
@@ -7,12 +7,11 @@
 import java.util.*;
 
 public class AcceptClient {
-	private int counter = 0, parentnum = 0;
+	private int nodeCounter = 0, parentnum = 0;
 	private LinkedList<String> ls = new LinkedList<String>();
 	private boolean addrRegistor = true;
-	private int passNumber=0,numberZone;
+	//private int passNumber=0,numberZone;
 	boolean runflag = false;
-	//private String name;
 	private int passCheck = 0;
 	private final int treebranch = 2; 
 	private String newparent,request,myAddress;
@@ -32,8 +31,7 @@
 	}
 	*/
 
-	// public synchronized void transferParentAddrerss(BufferedReader
-	// is,PrintStream os) {
+	
 	public void transferParentAddrerss(BufferedReader is,PrintStream os) {
 		try {
 			while (true) {
@@ -149,13 +147,15 @@
 	}
 	
 	private void replyLeaderNode(PrintStream os,BufferedReader is,String port,String treeNumber) throws IOException, InterruptedException {
-		os.println(ls.getLast());
+		String host = ls.getLast();
+		System.out.println("send for leadernode"+ host);
+		os.println(host);
 		replyNodeInformation(port);
-		counter--;
+		nodeCounter--;
 		passCheck = 1;
 		reportLastNode(ls.getLast(), newparent,port, String.valueOf(parentnum),sendleaderflag);
 		listupdate(port);
-		waitThread();
+		//		waitThread();
 		/*
 		if (Integer.parseInt(treeNumber)==ls.size()-1)
 			return;
@@ -163,12 +163,28 @@
 		//displyLinkedList(ls);
 		os.println(port);
 		leaderflag = decisionLeader(Integer.parseInt(treeNumber),treebranch);
+		lostNodeConnection(Integer.parseInt(treeNumber),host,port,treeNumber);
 		os.println(treeNumber);
 		Thread.sleep(intv_time);
 		is.close();
 		os.close();
 	}
 	
+	private void lostNodeConnection(int treeNum,String hostNode,String port,String treeNumber) throws UnknownHostException, IOException {
+		for(int i = 1; i < treebranch; i++) {
+			String host =ls.get(treeNum+i);
+			System.out.println("connection socket for-------------------- " + host );
+			Socket clients = new Socket(host, 9999);
+			clients.setReuseAddress(true);
+			DataOutputStream os = new DataOutputStream(clients.getOutputStream());
+			System.out.println("hostnode"+hostNode+"::port" + port);
+			os.writeBytes(hostNode+"\n");
+			os.writeBytes(port+"\n");
+			os.writeBytes(String.valueOf(treeNum+1)+"\n");
+			os.close();
+		}
+	}
+	
 	private void replyNormalChildren(PrintStream os,BufferedReader is,String port,String treeNumber,boolean flag) throws IOException, InterruptedException {
 		if(flag)
 			notifyThread();
@@ -196,22 +212,22 @@
 
 		if (line != null) {
 			addClientAdress(line, ls);
-			counter++;
+			nodeCounter++;
 		} else {
 			return true;
 		}
 		
-		if (counter >= treebranch + 1) {
-			leaderflag = decisionLeader(counter, treebranch);
-			parentnum = (counter - 1) / treebranch;
+		if (nodeCounter >= treebranch + 1) {
+			leaderflag = decisionLeader(nodeCounter, treebranch);
+			parentnum = (nodeCounter - 1) / treebranch;
 			request = ls.get(parentnum);
 			System.out.println(parentnum);
 			outputStream(os, request,String.valueOf(parentnum),
-					String.valueOf(counter), leaderflag);
-			checkParameter(parentnum, counter, leaderflag);
+					String.valueOf(nodeCounter), leaderflag);
+			checkParameter(parentnum, nodeCounter, leaderflag);
 		} else {
 			outputStream(os, myAddress, "0",
-					String.valueOf(counter), leaderflag);
+					String.valueOf(nodeCounter), leaderflag);
 		}
 		Thread.sleep(intv_time);
 		return false;
@@ -225,10 +241,14 @@
 			// echoSocket = new Socket(newchild, 10001 + (i + 1));//
 			echoSocket = new Socket(newchild, 10001);
 			DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream());
+			BufferedReader is = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
 			os.writeBytes(newparent + "\n");
 			os.writeBytes(newpnum + "\n");
-			os.writeBytes(newtreenum + "\n");
-			os.writeBytes(newleaderflag + "\n");
+//			os.writeBytes(newtreenum + "\n");
+//			os.writeBytes(newleaderflag + "\n");
+			// wait for last node connection.			
+			is.readLine();
+			is.close();
 			os.close();
 		} catch (UnknownHostException e) {
 			System.err.println("Don't know about host: localhost");
@@ -252,23 +272,22 @@
 		}
 
 	}
-	
+
+	/*
+	// previous viersion for reconnection.
 	synchronized void checkWait(PrintStream os,BufferedReader is,String port,int treeNum) throws InterruptedException, IOException {
 		final int TIMEOUT = 3000;
 		if (passNumber == 0) {
 			passNumber++;
 			numberZone = ((treeNum - 1) / treebranch);
-			//System.out.println(treeNum + "--wait--");
 			replyLeaderNode(os,is,port,String.valueOf(treeNum));
 			notifyAll();
 			passNumber = 0;
 		} else if (numberZone == ((treeNum - 1) / treebranch)) {
 			if (++passNumber == treebranch) {
-				//System.out.println(treeNum + "--notify--");
 				passNumber = 0;
 				replyNormalChildren(os,is,port,String.valueOf(treeNum),true);
 			} else {
-				//System.out.println(treeNum + "--waityobi--");
 				replyNormalChildren(os,is,port,String.valueOf(treeNum),false);
 				wait(TIMEOUT);
 			}
@@ -277,6 +296,12 @@
 			checkWait(os,is,port,treeNum);
 		}
 	}
+	*/
+	
+	
+	synchronized void checkWait(PrintStream os,BufferedReader is,String port,int treeNum) throws InterruptedException, IOException {
+		replyLeaderNode(os,is,port,String.valueOf(treeNum));
+	}
 	
 	private void waitThread() {
 		final int TIMEOUT = 3000;
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Sat Nov 02 17:55:10 2013 +0900
@@ -43,7 +43,6 @@
 	private ConnectionManager connectionManager;
 	private ConnectionParams connectionParams;
 	
-	boolean isClient = false;
 	public static final int DEFAULT_PORT = 5900;
 	public static Logger logger = Logger.getLogger("com.glavsoft");
 	private boolean forceReconnection;
@@ -77,6 +76,7 @@
 		settings = ProtocolSettings.getDefaultSettings();
 		uiSettings = super.uiSettings;
 		connectionParams.hostName = "localhost";
+		setIsClient(false);
 	}
 
 
--- a/src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java	Sat Nov 02 17:55:10 2013 +0900
@@ -140,6 +140,7 @@
 				socket = new Socket(connectionParams.hostName,
 						connectionParams.portNumber);
 				wasError = false;
+				socket.setReuseAddress(true);
 			} catch (UnknownHostException e) {
 				Viewer.logger.severe("Unknown host: "
 						+ connectionParams.hostName);
--- a/src/viewer_swing/java/com/glavsoft/viewer/ContainerManager.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/ContainerManager.java	Sat Nov 02 17:55:10 2013 +0900
@@ -88,7 +88,7 @@
 		container.setLayout(new BorderLayout(0, 0));
 		container.add(scroller, BorderLayout.CENTER);
 
-		if (isSeparateFrame) {
+		if (isSeparateFrame && viewer.getIsClient()) {
 //			frame.pack();
 			outerPanel.setSize(surface.getPreferredSize());
 			internalPack(null);
--- a/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Sat Nov 02 17:55:10 2013 +0900
@@ -66,7 +66,7 @@
 	
 	private boolean isInteger(String num) {
 		try {
-			int n = Integer.parseInt(num);
+			Integer.parseInt(num);
 			return true;
 		} catch (NumberFormatException e) {
 			return false;
--- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Wed Aug 07 18:00:54 2013 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Sat Nov 02 17:55:10 2013 +0900
@@ -72,6 +72,7 @@
 	private ContainerManager containerManager;
 	protected ConnectionManager connectionManager;
 	private MyRfbProto rfb;
+	protected boolean isClient;
 
 	public Protocol getWorkingProtocol() {
 		return workingProtocol;
@@ -293,7 +294,7 @@
 				break;
 			}
 			logger.info("Connected");
-			System.out.println("-------------"+connectionParams.hostName);
+			System.out.println("connection-----------" + workingSocket.getInetAddress());
 			try {
 				workingSocket.setTcpNoDelay(true); // disable Nagle algorithm
 				Reader reader = new Reader(workingSocket.getInputStream());
@@ -667,6 +668,7 @@
 	
 	public void close() {
 		try {
+			rfb.close();
 			workingProtocol.getWriter().close();
 			workingProtocol.getReader().close();
 			cleanUpUISessionAndConnection();
@@ -688,4 +690,13 @@
 	public void setTeminationType(boolean setType) {
 		rfb.setTerminationType(true);
 	}
+	
+	public boolean getIsClient() {
+		return isClient;
+	}
+	
+	public void setIsClient(boolean flag) {
+		isClient = flag;
+	}
+		
 }