# HG changeset patch # User one # Date 1348049287 -32400 # Node ID 1454d6fe96c128f678c6d92d93a1392b139f3536 # Parent b7d4d0349f99275bf8dd0a768a0b58241f3291d2 add Changehost.java diff -r b7d4d0349f99 -r 1454d6fe96c1 src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java --- /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; + } +} diff -r b7d4d0349f99 -r 1454d6fe96c1 src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java --- 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; + } }