changeset 37:1454d6fe96c1

add Changehost.java
author one
date Wed, 19 Sep 2012 19:08:07 +0900
parents b7d4d0349f99
children c2f0b6907448
files src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java
diffstat 2 files changed, 97 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java	Wed Sep 19 19:08:07 2012 +0900
@@ -0,0 +1,79 @@
+package jp.ac.u_ryukyu.treevnc.server;
+
+import java.awt.event.WindowListener;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+import jp.ac.u_ryukyu.treevnc.MyRfbProto;
+
+import com.glavsoft.rfb.protocol.ProtocolSettings;
+import com.glavsoft.viewer.ConnectionManager;
+import com.glavsoft.viewer.Viewer;
+import com.glavsoft.viewer.swing.ParametersHandler;
+
+public class ChangeHost extends ConnectionManager implements Runnable {
+	
+	private VncProxyService vps;
+
+	public ChangeHost(VncProxyService _vps, boolean isApplet) {
+		super(_vps, isApplet);
+		vps = _vps;
+	}
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	String str;
+
+	@Override
+	public void run() {
+		try {
+			while (true) {
+				BufferedReader br = new BufferedReader(new InputStreamReader(
+						System.in));
+				str = br.readLine();
+				vps.setConnectionManager(this);
+				Thread thread = new Thread(vps);
+				thread.start();
+				System.out.println(str);
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	String getHost() {
+		return str;
+	}
+
+	@Override
+	public Socket connectToHost(
+			final ParametersHandler.ConnectionParams connectionParams,
+			ProtocolSettings settings, MyRfbProto rfb) {
+		Socket socket = null;
+		connectionParams.hostName = str;
+		connectionParams.portNumber = 5900;
+		Viewer.logger.info("Connecting to host " + connectionParams.hostName
+				+ ":" + connectionParams.portNumber);
+		try {
+			socket = new Socket(connectionParams.hostName,
+					connectionParams.portNumber);
+		} catch (UnknownHostException e) {
+			Viewer.logger.severe("Unknown host: " + connectionParams.hostName);
+			showConnectionErrorDialog("Unknown host: '"
+					+ connectionParams.hostName + "'");
+		} catch (IOException e) {
+			Viewer.logger.severe("Couldn't connect to: "
+					+ connectionParams.hostName + ":"
+					+ connectionParams.portNumber + ": " + e.getMessage());
+			showConnectionErrorDialog("Couldn't connect to: '"
+					+ connectionParams.hostName + "'\n" + e.getMessage());
+		}
+		return socket;
+	}
+}
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Tue Sep 18 17:23:19 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Sep 19 19:08:07 2012 +0900
@@ -37,6 +37,7 @@
 	private static final long serialVersionUID = 1L;
 
 	public MyRfbProtoProxy rfb;
+	private ConnectionManager connectionManager;
 	// public AcceptClient acc;
 	public VncProxyService(Parser parser) {
 		this();
@@ -49,6 +50,7 @@
 	}
 	
 	public VncProxyService() {
+		connectionManager = new ConnectionManager(this, isApplet);
 		connectionParams = new ParametersHandler.ConnectionParams();
 		settings = ProtocolSettings.getDefaultSettings();
 		uiSettings = super.uiSettings;
@@ -62,7 +64,6 @@
 	private ConnectionParams connectionParams;
 	private final ProtocolSettings settings;
 	private final UiSettings uiSettings;
-	private AcceptClient aClient;
 	private Thread bCast;
 	private Thread accThread;
 	private AcceptThread acceptThread;
@@ -109,7 +110,6 @@
 	@Override
 	public void run() {
 	//	getHostData();
-		ConnectionManager connectionManager = new ConnectionManager(this, isApplet);
 		if (forceReconnection) {
 			connectionManager.showReconnectDialog("Connection lost", reconnectionReason);
 			forceReconnection = false;
@@ -133,26 +133,22 @@
 				workingProtocol = new Protocol(reader, writer,
 						new PasswordChooser(passwordFromParams, connectionParams, containerFrame, this),
 						settings);
-				aClient = new AcceptClient(connectionParams.hostName);
-				Thread thread = new Thread(new CreateThread(aClient));
-				thread.start();
+				threadSetAndStart();
 				workingProtocol.handshake();
 				rfb.setProtocolContext(workingProtocol);
-				
 				// input into change parents
                 ClipboardControllerImpl clipboardController =
 		                new ClipboardControllerImpl(workingProtocol, settings.getRemoteCharsetName());
 				clipboardController.setEnabled(settings.isAllowClipboardTransfer());
 				settings.addListener(clipboardController);
-				
 				surface = new Surface(workingProtocol, this, uiSettings.getScaleFactor()); // this method
 				settings.addListener(this);
 				uiSettings.addListener(surface);
 				containerFrame = createContainer();
 				connectionManager.setContainerFrame(containerFrame);
 				updateFrameTitle();
-
-				
+				containerFrame.dispose();
+				containerFrame = null;
 				workingProtocol.startNormalHandling(this, surface, clipboardController,rfb);
 				// rfb.setInitData(workingProtocol.getInitData()); too early
 				// workingProtocol.startNormalHandling(this, surface, clipboardController);
@@ -244,4 +240,17 @@
 		}
 		closeApp();
 	}
+	
+	private void threadSetAndStart() {
+		AcceptClient aClient = new AcceptClient(connectionParams.hostName);
+		Thread thread = new Thread(new CreateThread(aClient));
+		thread.start();
+		thread = new Thread(new ChangeHost(this, forceReconnection));
+		thread.start();
+		
+	}
+	
+	public void setConnectionManager(ConnectionManager _connectionManager) {
+		connectionManager = _connectionManager;
+	}
 }