# HG changeset patch # User one # Date 1345633526 -32400 # Node ID 406fa09ae64507ef0db89fadfdc8b225dc0361de # Parent 12c3a73be47f96b6bfcc9cbbd04716b2413ba6b1 modify VncProxyService.java diff -r 12c3a73be47f -r 406fa09ae645 src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java Tue Aug 21 14:24:38 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java Wed Aug 22 20:05:26 2012 +0900 @@ -2,34 +2,22 @@ import java.awt.event.WindowEvent; import java.awt.event.WindowListener; -import java.io.IOException; import java.util.logging.Logger; import javax.swing.SwingUtilities; -import com.glavsoft.exceptions.AuthenticationFailedException; -import com.glavsoft.exceptions.FatalException; -import com.glavsoft.exceptions.TransportException; -import com.glavsoft.exceptions.UnsupportedProtocolVersionException; -import com.glavsoft.exceptions.UnsupportedSecurityTypeException; import com.glavsoft.rfb.IChangeSettingsListener; import com.glavsoft.rfb.IRfbSessionListener; -import com.glavsoft.rfb.protocol.Protocol; import com.glavsoft.rfb.protocol.ProtocolSettings; -import com.glavsoft.transport.Reader; -import com.glavsoft.transport.Writer; -import com.glavsoft.viewer.ConnectionManager; import com.glavsoft.viewer.TreeConnectionManager; import com.glavsoft.viewer.Viewer; import com.glavsoft.viewer.cli.Parser; -import com.glavsoft.viewer.swing.ClipboardControllerImpl; import com.glavsoft.viewer.swing.ParametersHandler; -import com.glavsoft.viewer.swing.Surface; import com.glavsoft.viewer.swing.UiSettings; import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams; - +// "Viewer.java" location is src/viewer_swing/java/com/glavsoft/viewer. public class MyVncClient extends Viewer implements IRfbSessionListener, WindowListener, IChangeSettingsListener { @@ -37,17 +25,12 @@ * */ private static final long serialVersionUID = 1L; - // private boolean runflag = false; - boolean isClient = false; public static final int DEFAULT_PORT = 5900; public static Logger logger = Logger.getLogger("com.glavsoft"); - private boolean forceReconnection; - private String reconnectionReason; private ConnectionParams connectionParams; private final ProtocolSettings settings; private final UiSettings uiSettings; - private String[] arguments; private TreeConnectionManager treeConnectionManager; @@ -69,15 +52,11 @@ public void treeVncClient(String[] argv) { new MyVncClient(); - //v.runClient(argv); } - // private void runClient(String[] argv) { public static void main(String[] argv) { String[] mainArgs = argv; System.out.println(mainArgs.length); - // input into arguments Decision - Parser parser = new Parser(); ParametersHandler.completeParserOptions(parser); @@ -94,82 +73,9 @@ public void setType() { super.setType(treeConnectionManager); } - - public void mainLoop() { - // getHostData(); - if (forceReconnection) { - treeConnectionManager.showReconnectDialog("Connection lost", reconnectionReason); - forceReconnection = false; - } - tryAgain = true; - while (tryAgain) { - connectionParams.hostName = arguments[0]; - // workingSocket = connectionManager.connectToTreeHost(connectionParams, settings); - workingSocket = treeConnectionManager.connectToHost(connectionParams, settings); - if (null == workingSocket) { - closeApp(); - break; - } - logger.info("Connected"); - - try { - workingSocket.setTcpNoDelay(true); // disable Nagle algorithm - Reader reader = new Reader(workingSocket.getInputStream()); - Writer writer = new Writer(workingSocket.getOutputStream()); - - workingProtocol = new Protocol(reader, writer, - new PasswordChooser(passwordFromParams, connectionParams, containerFrame, this), - settings); - - workingProtocol.handshake(); - // 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()); - settings.addListener(this); - uiSettings.addListener(surface); - containerFrame = createContainer(); - treeConnectionManager.setContainerFrame(containerFrame); - updateFrameTitle(); - - workingProtocol.startNormalHandling(this, surface, clipboardController); - tryAgain = false; - } catch (UnsupportedProtocolVersionException e) { - treeConnectionManager.showReconnectDialog("Unsupported Protocol Version", e.getMessage()); - logger.severe(e.getMessage()); - } catch (UnsupportedSecurityTypeException e) { - treeConnectionManager.showReconnectDialog("Unsupported Security Type", e.getMessage()); - logger.severe(e.getMessage()); - } catch (AuthenticationFailedException e) { - passwordFromParams = null; - treeConnectionManager.showReconnectDialog("Authentication Failed", e.getMessage()); - logger.severe(e.getMessage()); - } catch (TransportException e) { - treeConnectionManager.showReconnectDialog("Connection Error", "Connection Error" + ": " + e.getMessage()); - logger.severe(e.getMessage()); - } catch (IOException e) { - treeConnectionManager.showReconnectDialog("Connection Error", "Connection Error" + ": " + e.getMessage()); - logger.severe(e.getMessage()); - } catch (FatalException e) { - treeConnectionManager.showReconnectDialog("Connection Error", "Connection Error" + ": " + e.getMessage()); - logger.severe(e.getMessage()); - } - } - - } - public void setArgments(String[] args) { - arguments = args; - } - - - @Override public void destroy() { - // TODO Auto-generated method stub } diff -r 12c3a73be47f -r 406fa09ae645 src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Tue Aug 21 14:24:38 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Wed Aug 22 20:05:26 2012 +0900 @@ -7,14 +7,14 @@ import java.util.*; public class AcceptClient { - private int counter = 0, parentnum = 0 /* 落ちたときの親の番号をカウントするためのもの */; + private int counter = 0, parentnum = 0; private LinkedList ls = new LinkedList(); private boolean addrRegistor = true; private int passNumber=0,numberZone; boolean runflag = false; //private String name; private int passCheck = 0; - private final int treebranch = 2; // treeの子ノードの数 + private final int treebranch = 2; private String newparent,request,myAddress; private String leaderflag = "0", sendleaderflag = "0"; private final int intv_time = 100; @@ -35,7 +35,6 @@ // public synchronized void transferParentAddrerss(BufferedReader // is,PrintStream os) { public void transferParentAddrerss(BufferedReader is,PrintStream os) { - // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す try { while (true) { String line = is.readLine(); @@ -219,7 +218,6 @@ String.valueOf(counter), leaderflag); checkParameter(parentnum, counter, leaderflag); } else { - // treeの親ノードに接続する人に接続する人を教える outputStream(os, myAddress, "0", String.valueOf(counter), leaderflag); } @@ -233,7 +231,6 @@ Socket echoSocket; System.out.println(newchild + "connect"); // echoSocket = new Socket(newchild, 10001 + (i + 1));// - // i+1は実験中に同じマシーンを使っていたのでportを変えて対応、本番時には取り除く予定。 echoSocket = new Socket(newchild, 10001); DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream()); os.writeBytes(newparent + "\n"); diff -r 12c3a73be47f -r 406fa09ae645 src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java Tue Aug 21 14:24:38 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java Wed Aug 22 20:05:26 2012 +0900 @@ -6,6 +6,7 @@ import java.net.InetAddress; import java.net.MulticastSocket; import java.net.SocketAddress; +import java.net.UnknownHostException; //import TextBoxProxy; @@ -21,10 +22,10 @@ private BroadCastProxy bCast; private String address; - public GetBroadCastProxy(VncProxyService _vps){ + public GetBroadCastProxy(VncProxyService _vps,String desktopName,String host){ vps = _vps; - bCast = new BroadCastProxy(vps.rfb.acceptPort+":"+vps.host+":" - +vps.rfb.desktopName+":"+vps.acc.getMyAddress()+":"); + bCast = new BroadCastProxy(vps.rfb.acceptPort+":"+host+":" + +desktopName+":"+getMyAddress()+":"); } private synchronized void getData() { @@ -94,5 +95,16 @@ public boolean isStopFlag() { return stopFlag; } + + String getMyAddress () { + InetAddress addr = null; + try { + addr = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + return new String(addr.getHostAddress()); + } + } diff -r 12c3a73be47f -r 406fa09ae645 src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Tue Aug 21 14:24:38 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Wed Aug 22 20:05:26 2012 +0900 @@ -5,6 +5,7 @@ import java.util.logging.Logger; + import com.glavsoft.exceptions.AuthenticationFailedException; import com.glavsoft.exceptions.FatalException; import com.glavsoft.exceptions.TransportException; @@ -21,7 +22,6 @@ import com.glavsoft.viewer.cli.Parser; import com.glavsoft.viewer.swing.ClipboardControllerImpl; import com.glavsoft.viewer.swing.ParametersHandler; -import com.glavsoft.viewer.swing.Surface; import com.glavsoft.viewer.swing.UiSettings; import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams; @@ -34,6 +34,7 @@ private static final long serialVersionUID = 1L; public MyRfbProtoProxy rfb; + // public AcceptClient acc; public VncProxyService(Parser parser) { this(); try { @@ -52,7 +53,6 @@ connectionParams = new ParametersHandler.ConnectionParams(); settings = ProtocolSettings.getDefaultSettings(); uiSettings = super.uiSettings; - } boolean isClient = false; @@ -63,7 +63,12 @@ private ConnectionParams connectionParams; private final ProtocolSettings settings; private final UiSettings uiSettings; - private String[] arguments; + private AcceptClient aClient; + private Thread bCast; + private Thread accThread; + private Thread rfbThread; + private AcceptThread acceptThread; + private GetBroadCastProxy getCast; public static void main(String[] argv) { @@ -91,10 +96,17 @@ //SwingUtilities.invokeLater(myClient); Thread th = new Thread(vps); th.start(); + try { + th.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + vps.createConnection(); + vps.start_threads(); + } private void setArguments(String[] mainArgs) { - arguments = mainArgs; } @Override @@ -107,7 +119,7 @@ } tryAgain = true; while (tryAgain) { - connectionParams.hostName = arguments[0]; + // connectionParams.hostName = arguments[0]; // workingSocket = connectionManager.connectToTreeHost(connectionParams, settings); workingSocket = connectionManager.connectToHost(connectionParams, settings); if (null == workingSocket) { @@ -120,26 +132,21 @@ workingSocket.setTcpNoDelay(true); // disable Nagle algorithm Reader reader = new Reader(workingSocket.getInputStream()); Writer writer = new Writer(workingSocket.getOutputStream()); - 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(); workingProtocol.handshake(); + // 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()); - settings.addListener(this); - uiSettings.addListener(surface); - containerFrame = createContainer(); - connectionManager.setContainerFrame(containerFrame); - updateFrameTitle(); - - workingProtocol.startNormalHandling(this, surface, clipboardController); tryAgain = false; } catch (UnsupportedProtocolVersionException e) { connectionManager.showReconnectDialog("Unsupported Protocol Version", e.getMessage()); @@ -162,7 +169,24 @@ logger.severe(e.getMessage()); } } - + } + + public void createConnection() { + rfb.selectPort(5999); + rfbThread = new Thread(this); + acceptThread = new AcceptThread(rfb, 5999); + accThread = new Thread(acceptThread); + getCast = new GetBroadCastProxy(this, + workingProtocol.getRemoteDesktopName(), + this.connectionParams.hostName); + bCast = new Thread(getCast); + } + + public void start_threads() { + //rfbThread.start(); + accThread.start(); + bCast.start(); + //rfb.requestThreadStart(); }