changeset 80:2951dd85e9fc

connect to real connection address instead of bad getLocalAddress().
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 30 Apr 2014 13:43:10 +0900
parents 015321785ddf
children f93d0286c2ab
files src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/GetDataClient.java src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java src/viewer_swing/java/com/glavsoft/viewer/ConnectionPresenter.java
diffstat 6 files changed, 19 insertions(+), 72 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java	Wed Apr 30 11:52:34 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java	Wed Apr 30 13:43:10 2014 +0900
@@ -18,6 +18,7 @@
 		GetHostClient bCast = new GetHostClient("who");
 		bCast.getHost();
 		GetDataClient getBcast = new GetDataClient();
+		// we should try this in a loop until get correct hostName
 		Thread runBcast = new Thread(getBcast);
 		runBcast.start();
 		hostName = getBcast.textAddress();
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Wed Apr 30 11:52:34 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java	Wed Apr 30 13:43:10 2014 +0900
@@ -28,14 +28,13 @@
 
 	public void openport() {
 		try {
-			// if(echoSocket==null)
 			echoSocket = new Socket(proxyName, echoPort);
 			echoSocket.setReuseAddress(true);
 			os = new DataOutputStream(echoSocket.getOutputStream());
 			is = new BufferedReader(new InputStreamReader(
 					echoSocket.getInputStream()));
 		} catch (UnknownHostException e) {
-			System.err.println("Don't know about host: localhost");
+			System.err.println("Don't know about host: "+proxyName);
 		} catch (IOException e) {
 			System.out.println(proxyName + " Connection Faild");
 			System.exit(0);
@@ -51,14 +50,11 @@
 	public EchoClient requestHostName(String args) {
 		if (echoSocket != null && os != null && is != null) {
 			try {
-
-				InetAddress addr = InetAddress.getLocalHost();
-				myAddress = new String(addr.getHostAddress());
-				// add = getIpV6();
-
+				InetAddress addr = echoSocket.getLocalAddress();
+				myAddress = addr.getHostAddress();
 				os.writeBytes(myAddress + "\n");
 				os.writeBytes(args + "\n");
-				getProxyData(is);
+				getProxyData(is, echoSocket);
 
 				streamClose();
 			} catch (UnknownHostException e) {
@@ -102,7 +98,7 @@
 			runflag = true;
 			try {
 				sendDataProxy("2", parentNum, null);
-				getProxyData(is);
+				getProxyData(is, echoSocket);
 				reConnectionMain(echoSocket);
 				streamClose();
 			} catch (UnknownHostException e) {
@@ -116,12 +112,10 @@
 
 	public EchoClient Interruption(Socket _clientSocket) {
 		clientSocket = _clientSocket;
-		BufferedReader lostis = null;
-
 		try {
-			lostis = new BufferedReader(new InputStreamReader(
+			BufferedReader lostis = new BufferedReader(new InputStreamReader(
 					clientSocket.getInputStream()));
-			getProxyData(lostis);
+			getProxyData(lostis, clientSocket);
 			clientSocket.close();
 		} catch (IOException e) {
 			System.out.println(e);
@@ -129,9 +123,9 @@
 		return this;
 	}
 
-	void getProxyData(BufferedReader is) throws IOException {
+	void getProxyData(BufferedReader is, Socket soc) throws IOException {
 		if ((parentAddress = is.readLine()) != null) {
-			System.out.println("Server: " + parentAddress);
+            System.out.println("Server received: " + parentAddress);
 		}
 		if ((parentNum = is.readLine()) != null) {
 			System.out.println("parent: " + parentNum);
@@ -142,48 +136,11 @@
 		if ((leaderFlag = is.readLine()) != null) {
 			System.out.println("leaderflag: " + leaderFlag);
 		}
+		InetAddress parent = soc.getInetAddress();
+		parentAddress = parent.getHostName();
+        System.out.println("Actual Server: " + parentAddress);
 	}
 
-	/*
-	String getProxyData2(BufferedReader is) throws IOException {
-		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;
-	}
-	 */
 	void reConnectionMain(Socket echoSocket) {
 		while (true) {
 			try {
@@ -237,7 +194,6 @@
 
 	public void getParentName() {
 		if (clientSocket == null) {
-			// echo = new EchoClient(pHost, this);
 			openport();
 			requestHostName("1"); // 1 is normal connection type.
 		} else {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/GetDataClient.java	Wed Apr 30 11:52:34 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/GetDataClient.java	Wed Apr 30 13:43:10 2014 +0900
@@ -45,6 +45,7 @@
 				// proxyAddr format
 				// 5999:localhost:localhost:133.13.59.210:
 				// port:hostnae:hostname:ip address:
+				// GetBroadCastProxy create this string on VNC root
 				InetAddress adr = socket.getInetAddress();
 				String proxyAddr1 = adr.getHostName();
 				if (proxyAddr1 != null) {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java	Wed Apr 30 11:52:34 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java	Wed Apr 30 13:43:10 2014 +0900
@@ -23,9 +23,11 @@
 	private MulticastSocket soc;
 
 	public GetBroadCastProxy(VncProxyService _vps,String desktopName,String host){
+	    String myaddress = getMyAddress();
+	    // getMyAddress is not always connectable eg. in private segment.
 		vps = _vps;
 		bCast = new BroadCastProxy(vps.getRfb().getAcceptPort()+":"+host+":"
-				+desktopName+":"+getMyAddress()+":");
+				+desktopName+":"+myaddress+":");
 	}
 	
 	private synchronized void getData() {
@@ -91,8 +93,8 @@
 		try {
 			addr = InetAddress.getLocalHost();
 		} catch (UnknownHostException e) {
-			e.printStackTrace();
+			return "localhost";
 		}
-		return new String(addr.getHostAddress());
+		return addr.getHostAddress();
 	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Apr 30 11:52:34 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Apr 30 13:43:10 2014 +0900
@@ -93,15 +93,6 @@
 		}
 	}
 
-/*
-	private void cleanUpSession() {
-		if (prevVps != null) {
-			prevVps.cleanUpSession();
-			prevVps = null;
-		}
-		// workingProtocol.cleanUpSession();
-	}
-*/
 	public void createConnectionAndStart() {
 		Thread thread;
 		opendPort = myRfb.selectPort(5999);
--- a/src/viewer_swing/java/com/glavsoft/viewer/ConnectionPresenter.java	Wed Apr 30 11:52:34 2014 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/ConnectionPresenter.java	Wed Apr 30 13:43:10 2014 +0900
@@ -36,9 +36,6 @@
 import java.net.Socket;
 import java.util.logging.Logger;
 
-import jp.ac.u_ryukyu.treevnc.CreateConnectionParam;
-import jp.ac.u_ryukyu.treevnc.client.MyRfbProtoClient;
-
 /**
  * @author dime at tightvnc.com
  */
@@ -128,7 +125,6 @@
 
     private void connect() {
         final ConnectionParams connectionParams = (ConnectionParams) getModel(CONNECTION_PARAMS_MODEL);
-        // TODO check connectionWorkerFactory is init
         if(!cuiVersion)
         	networkConnectionWorker = connectionWorkerFactory.createNetworkConnectionWorker();
         else