Mercurial > hg > Applications > TightVNC_orginal
diff src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java @ 38:c2f0b6907448
add doc directory
author | one |
---|---|
date | Thu, 27 Sep 2012 19:32:25 +0900 |
parents | 1454d6fe96c1 |
children | 3c072f2f39bb |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Thu Sep 27 19:32:25 2012 +0900 @@ -2,6 +2,9 @@ import java.awt.event.*; import java.io.*; +import java.net.Socket; +import java.net.UnknownHostException; +import java.util.LinkedList; import java.util.logging.Logger; import jp.ac.u_ryukyu.treevnc.AcceptThread; @@ -38,10 +41,13 @@ public MyRfbProtoProxy rfb; private ConnectionManager connectionManager; + private VncProxyService vps; + private CreateThread createThread; + AcceptClient aClient; + private int port; // public AcceptClient acc; public VncProxyService(Parser parser) { this(); - rfb = new MyRfbProtoProxy(); ParametersHandler.completeSettingsFromCLI(parser, connectionParams, settings, uiSettings); showControls = ParametersHandler.showControls; passwordFromParams = parser.getValueFor(ParametersHandler.ARG_PASSWORD); @@ -50,6 +56,8 @@ } public VncProxyService() { + rfb = new MyRfbProtoProxy(); + aClient = new AcceptClient(); connectionManager = new ConnectionManager(this, isApplet); connectionParams = new ParametersHandler.ConnectionParams(); settings = ProtocolSettings.getDefaultSettings(); @@ -64,8 +72,6 @@ private ConnectionParams connectionParams; private final ProtocolSettings settings; private final UiSettings uiSettings; - private Thread bCast; - private Thread accThread; private AcceptThread acceptThread; private GetBroadCastProxy getCast; @@ -100,8 +106,7 @@ } catch (InterruptedException e) { e.printStackTrace(); } - vps.createConnection(); - vps.start_threads(); + vps.createConnectionAndStart(); } private void setArguments(String[] mainArgs) { @@ -133,9 +138,9 @@ workingProtocol = new Protocol(reader, writer, new PasswordChooser(passwordFromParams, connectionParams, containerFrame, this), settings); - threadSetAndStart(); workingProtocol.handshake(); rfb.setProtocolContext(workingProtocol); + threadSetAndStart(); // input into change parents ClipboardControllerImpl clipboardController = new ClipboardControllerImpl(workingProtocol, settings.getRemoteCharsetName()); @@ -176,20 +181,20 @@ } } - public void createConnection() { - rfb.selectPort(5999); - acceptThread = new AcceptThread(rfb, 5999); - accThread = new Thread(acceptThread); + public void createConnectionAndStart() { + port = rfb.selectPort(5999); + acceptThread = new AcceptThread(rfb, port); + Thread thread = new Thread(acceptThread); + thread.start(); getCast = new GetBroadCastProxy(this, workingProtocol.getRemoteDesktopName(), this.connectionParams.hostName); - bCast = new Thread(getCast); + thread = new Thread(getCast); + thread.start(); } public void start_threads() { //rfbThread.start(); - accThread.start(); - bCast.start(); //rfb.requestThreadStart(); } @@ -206,7 +211,7 @@ printUsage(parser.optionsUsage()); System.exit(0); } - VncProxyService vps = new VncProxyService(parser); + vps = new VncProxyService(parser); if (mainArgs.length != 0) { for (int i = 0; i < argv.length; i++) { vps.setArguments(mainArgs); @@ -223,8 +228,7 @@ } catch (InterruptedException e) { e.printStackTrace(); } - vps.createConnection(); - vps.start_threads(); + vps.createConnectionAndStart(); } @@ -241,16 +245,55 @@ closeApp(); } - private void threadSetAndStart() { - AcceptClient aClient = new AcceptClient(connectionParams.hostName); - Thread thread = new Thread(new CreateThread(aClient)); + private void threadSetAndStart() throws UnknownHostException, IOException { + //aClient = new AcceptClient(); + createThread = new CreateThread(aClient); + Thread thread = new Thread(createThread); thread.start(); - thread = new Thread(new ChangeHost(this, forceReconnection)); + thread = new Thread(new ChangeHost(new VncProxyService(), forceReconnection,this)); thread.start(); - +// createSocketAndSend(aClient.getList(),String.valueOf(port)); } public void setConnectionManager(ConnectionManager _connectionManager) { connectionManager = _connectionManager; } + + protected void socketClose() { + try { + workingSocket.close(); + acceptThread.flag=true; + getCast.setStopFlag(true); + //createThread.setStopFlag(true); + } catch (IOException e) {/*nop*/} + } + + @Override + public void rfbSessionStopped(final String reason) { + if (workingSocket != null && workingSocket.isConnected()) { + try { + workingSocket.close(); + } catch (IOException e) { /*nop*/ } + } + } + + private void createSocketAndSend(LinkedList<String> clientList,String port) throws UnknownHostException, IOException { + int i = 0; + for(String client : clientList) { + if(i!=0) { + Socket echoSocket; + echoSocket = new Socket(client, 10001); + DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream()); + os.writeBytes("reconnection\n"); + os.writeBytes(port+"\n"); + os.close(); + } + i++; + } + } + + public void changeVNCServer() { + // sender and re + workingProtocol.cleanUpSession(); + } }