# HG changeset patch # User one # Date 1348741945 -32400 # Node ID c2f0b6907448526654ab25401e06a0ea8a305951 # Parent 1454d6fe96c128f678c6d92d93a1392b139f3536 add doc directory diff -r 1454d6fe96c1 -r c2f0b6907448 dist/tightvnc-jviewer-2.5.0/tightvnc-jviewer.jar Binary file dist/tightvnc-jviewer-2.5.0/tightvnc-jviewer.jar has changed diff -r 1454d6fe96c1 -r c2f0b6907448 doc/change VNCServer1.asta Binary file doc/change VNCServer1.asta has changed diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java --- a/src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java Thu Sep 27 19:32:25 2012 +0900 @@ -68,5 +68,5 @@ void cleanUpSession(String message); void setInitData(byte[] initData); - + } \ No newline at end of file diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java Thu Sep 27 19:32:25 2012 +0900 @@ -8,9 +8,10 @@ import com.glavsoft.transport.Writer; public class AcceptThread implements Runnable { - MyRfbProto rfb = null; + public MyRfbProto rfb = null; byte[] imageBytes; int port; + public boolean flag = false; public AcceptThread(MyRfbProto _rfb) { rfb = _rfb; @@ -32,14 +33,28 @@ while (true) { try { Socket newCli = rfb.accept(); - + if(flag) throw new IOException(); OutputStream os = newCli.getOutputStream(); InputStream is = newCli.getInputStream(); + if(confirmHalt(is)) break; rfb.newClient(this, newCli, new Writer(os), new Reader(is)); } catch (IOException e) { - e.printStackTrace(); - System.out.println(e); + break; } } } + + + /** + * Instruction stop if you come from if WaitReply. + * @return if return true. This Thread halt. + */ + private boolean confirmHalt(InputStream is) throws IOException { + byte[] b = new byte[4]; + is.mark(4); + is.read(b); + if(String.valueOf(b).equals("halt")) return true; + is.reset(); + return false; + } } diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Thu Sep 27 19:32:25 2012 +0900 @@ -290,8 +290,8 @@ return null; } - public void selectPort(int port) { - + public int selectPort(int port) { + return port; } diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java Thu Sep 27 19:32:25 2012 +0900 @@ -267,18 +267,14 @@ public Socket createSocketForClient(Socket soc) throws IOException { BufferedReader is = new BufferedReader(new InputStreamReader( soc.getInputStream())); - if ((parentAddress = is.readLine()) != null) { - System.out.println("Server: " + parentAddress); - } - if ((parentNum = is.readLine()) != null) { - System.out.println("parent: " + parentNum); - } - if ((treeNum = is.readLine()) != null) { - System.out.println("treenum: " + treeNum); - } - if ((leaderFlag = is.readLine()) != null) { - System.out.println("leaderflag: " + leaderFlag); - } - return new Socket(parentAddress,5999); + String tempParentAddress = is.readLine(); + parentNum = is.readLine(); + if("reconnection".equals(tempParentAddress)) { + System.out.println("into function \n" + parentNum); + return new Socket(parentAddress,Integer.parseInt(parentNum)); + } + treeNum = is.readLine(); + leaderFlag = is.readLine(); + return new Socket(tempParentAddress,5999); } } \ No newline at end of file diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java Thu Sep 27 19:32:25 2012 +0900 @@ -86,7 +86,7 @@ } @Override - public void selectPort(int p) { + public int selectPort(int p) { int port = p; while (true) { try { @@ -100,6 +100,7 @@ } } System.out.println("accept port = " + port); + return port; } void sendRfbVersion(OutputStream os) throws IOException { diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java Thu Sep 27 19:32:25 2012 +0900 @@ -1,12 +1,17 @@ package jp.ac.u_ryukyu.treevnc.client; import java.io.IOException; +import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; +/** + * this Class get top(Proxy) Instruction. + * Type of Instruction is ReConnection and SocketClose. + */ public class WaitReply extends Thread { - boolean passflag; - EchoClient echo; + private boolean passflag; + private EchoClient echo; public WaitReply(String treenum, EchoClient echo) { this.echo = echo; @@ -19,7 +24,6 @@ public void run() { Socket clientSocket = null; ServerSocket echoServer = null; - while (true) { try { echoServer = new ServerSocket(10001); @@ -28,6 +32,7 @@ echo.client.close(); passflag = true; echo.client.setSocket(echo.createSocketForClient(clientSocket)); + // hult(); // client.init(); echo.client.run(); echoServer.close(); @@ -37,4 +42,11 @@ } } } + + private void hult() throws IOException { + Socket socket = new Socket("localhsot", echo.client.getPort()); + OutputStream stream = socket.getOutputStream(); + stream.write("halt".getBytes()); + stream.flush(); + } } diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java Thu Sep 27 19:32:25 2012 +0900 @@ -21,7 +21,7 @@ - public AcceptClient(String name) { + public AcceptClient() { //this.name = name; } @@ -289,4 +289,12 @@ private void notifyThread() { notifyAll(); } + + public LinkedList getList() { + return ls; + } + + public void setList(LinkedList _ls) { + ls = _ls; + } } \ No newline at end of file diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/BroadCastProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/BroadCastProxy.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/BroadCastProxy.java Thu Sep 27 19:32:25 2012 +0900 @@ -14,22 +14,22 @@ str = _str; } - void createSocket(String addr) { - while (true) { - try { - Thread.sleep(1000); - socket = new Socket(addr, port); - os = new PrintStream(socket.getOutputStream()); - os.println(str); - os.close(); - socket.close(); - break; - } catch (IOException e) { - System.out.println("Connection faild"); - continue; - } catch (InterruptedException e) { - e.printStackTrace(); - } + void createSocket(String addr) { + // while (true) { + try { + Thread.sleep(1000); + socket = new Socket(addr, port); + os = new PrintStream(socket.getOutputStream()); + os.println(str); + os.close(); + socket.close(); + //break; + } catch (IOException e) { + System.out.println("Connection faild"); + //continue; + } catch (InterruptedException e) { + e.printStackTrace(); } + // } } } diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java Thu Sep 27 19:32:25 2012 +0900 @@ -1,11 +1,12 @@ package jp.ac.u_ryukyu.treevnc.server; -import java.awt.event.WindowListener; import java.io.BufferedReader; +import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; +import java.util.LinkedList; import jp.ac.u_ryukyu.treevnc.MyRfbProto; @@ -15,12 +16,17 @@ import com.glavsoft.viewer.swing.ParametersHandler; public class ChangeHost extends ConnectionManager implements Runnable { - + private VncProxyService vps; - - public ChangeHost(VncProxyService _vps, boolean isApplet) { + private VncProxyService prevVps; + private LinkedList clientList; + private int port; + + public ChangeHost(VncProxyService _vps, boolean isApplet, + VncProxyService _prevVps) { super(_vps, isApplet); vps = _vps; + prevVps = _prevVps; } /** @@ -32,17 +38,24 @@ @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); - } + BufferedReader br = new BufferedReader(new InputStreamReader( + System.in)); + str = br.readLine(); + vps.changeVNCServer(); + vps.setConnectionManager(this); + Thread thread = new Thread(vps); + thread.start(); + Thread.sleep(1000); + vps.createConnectionAndStart(); + prevVps.socketClose(); + vps.aClient.setList(prevVps.aClient.getList()); +// clientList = prevVps.aClient.getList(); +// createSocketAndSend(clientList,String.valueOf(port)); + System.out.println(str); } catch (IOException e) { e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); } } @@ -76,4 +89,19 @@ } return socket; } + + private void createSocketAndSend(LinkedList 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++; + } + } } diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/CreateThread.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/CreateThread.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/CreateThread.java Thu Sep 27 19:32:25 2012 +0900 @@ -12,6 +12,7 @@ ServerSocket echoServer; AcceptClient acceptClient; private int port; + private boolean stopFlag; public CreateThread(AcceptClient _acc) { acceptClient = _acc; @@ -69,6 +70,7 @@ try { // echoServer = new ServerSocket(9999); Socket clientSocket = echoServer.accept(); + if(stopFlag) break; BufferedReader is = new BufferedReader(new InputStreamReader( clientSocket.getInputStream())); PrintStream os = new PrintStream(clientSocket.getOutputStream()); @@ -77,16 +79,11 @@ } catch (IOException e) { System.out.println(e); } -/* - try { - echoServer.close(); - } catch (IOException e) { - System.out.println(e); - } -*/ - } } + public void setStopFlag(boolean flag){ + stopFlag = flag; + } } diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java Thu Sep 27 19:32:25 2012 +0900 @@ -42,6 +42,7 @@ if("who".equals(castString(resorve))){ replyBroadCast(); } + if(stopFlag) break; } } catch (IOException e) { e.printStackTrace(); diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java Thu Sep 27 19:32:25 2012 +0900 @@ -78,9 +78,9 @@ /* * default port number is 5999. */ - public void selectPort(int p) { + public int selectPort(int p) { if (servSock != null) - return; + return 0; int port = p; while (true) { try { @@ -94,6 +94,7 @@ } } System.out.println("accept port = " + port); + return port; } int getAcceptPort() { diff -r 1454d6fe96c1 -r c2f0b6907448 src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java --- 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 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(); + } } diff -r 1454d6fe96c1 -r c2f0b6907448 src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java --- a/src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java Thu Sep 27 19:32:25 2012 +0900 @@ -124,6 +124,7 @@ ConnectionDialog connectionDialog = null; boolean wasError = false; do { + /* if (forceConnectionDialog || wasError || connectionParams.isHostNameEmpty() || -1 == connectionParams.portNumber) { @@ -137,6 +138,9 @@ connectionParams.hostName = connectionDialog.getServerNameString(); connectionParams.portNumber = connectionDialog.getPort(); } + */ + connectionParams.hostName = "localhost"; + connectionParams.portNumber = 5900; Viewer.logger.info("Connecting to host " + connectionParams.hostName + ":" + connectionParams.portNumber); try { socket = new Socket(connectionParams.hostName, connectionParams.portNumber); diff -r 1454d6fe96c1 -r c2f0b6907448 src/viewer_swing/java/com/glavsoft/viewer/Viewer.java --- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Wed Sep 19 19:08:07 2012 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Thu Sep 27 19:32:25 2012 +0900 @@ -620,7 +620,7 @@ private void runAcceptThread() { - Thread accThread = new Thread(new AcceptThread(rfb, 5999)); + Thread accThread = new Thread(new AcceptThread(rfb, connectionParams.portNumber)); accThread.start(); } @@ -652,5 +652,9 @@ e.printStackTrace(); } } + + public int getPort() { + return connectionParams.portNumber; + } }