# HG changeset patch # User one # Date 1347956599 -32400 # Node ID b7d4d0349f99275bf8dd0a768a0b58241f3291d2 # Parent 1b81deb0abb3201d124589f24416b04ef349792e write part of reconnection and remove warning. diff -r 1b81deb0abb3 -r b7d4d0349f99 dist/tightvnc-jviewer-2.5.0/tightvnc-jviewer.jar Binary file dist/tightvnc-jviewer-2.5.0/tightvnc-jviewer.jar has changed diff -r 1b81deb0abb3 -r b7d4d0349f99 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Wed Sep 12 13:16:47 2012 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Tue Sep 18 17:23:19 2012 +0900 @@ -53,8 +53,6 @@ private static final byte SET_COLOR_MAP_ENTRIES = 1; private static final byte BELL = 2; private static final byte SERVER_CUT_TEXT = 3; - - protected static Logger logger = Logger.getLogger("com.glavsoft.rfb.protocol.ReceiverTask"); protected final Reader reader; private volatile boolean isRunning = false; @@ -123,9 +121,17 @@ logger.severe("Close session: " + e.getMessage()); if(rfb instanceof MyRfbProtoClient) { System.out.println("task stop"); - EchoClient echo = rfb.getEcho(); - echo.openport(); - echo.lostHost(); + int counter = 0; + while(true) { + EchoClient echo = rfb.getEcho(); + if(counter > 3) { + echo.openport(); + echo.notfoundParent(); + } + echo.openport(); + if(echo.lostHost()) break; + counter++; + } } else if (isRunning) { context.cleanUpSession("Connection closed."); } diff -r 1b81deb0abb3 -r b7d4d0349f99 src/main/java/com/glavsoft/transport/Reader.java --- a/src/main/java/com/glavsoft/transport/Reader.java Wed Sep 12 13:16:47 2012 +0900 +++ b/src/main/java/com/glavsoft/transport/Reader.java Tue Sep 18 17:23:19 2012 +0900 @@ -154,7 +154,8 @@ result = is.read(b); return result; } catch (IOException e) { - throw new TransportException("Cannot readByte", e); + return 0; +// throw new TransportException("Cannot readByte", e); } } diff -r 1b81deb0abb3 -r b7d4d0349f99 src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Wed Sep 12 13:16:47 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Tue Sep 18 17:23:19 2012 +0900 @@ -14,6 +14,7 @@ import com.glavsoft.rfb.protocol.ProtocolContext; import com.glavsoft.transport.Reader; import com.glavsoft.transport.Writer; +import com.glavsoft.viewer.Viewer; public class MyRfbProto { final static int FramebufferUpdateRequest = 3; @@ -100,6 +101,7 @@ writerRunning.set(2); os.close(); is.close(); + break; } catch (IOException e1) { } catch (TransportException e1) { e1.printStackTrace(); @@ -320,6 +322,10 @@ echo = _echo; } + public void setViewer(Viewer v) { + echo.setViewer(v); + } + public EchoClient getEcho() { return echo; } diff -r 1b81deb0abb3 -r b7d4d0349f99 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 12 13:16:47 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/EchoClient.java Tue Sep 18 17:23:19 2012 +0900 @@ -3,8 +3,7 @@ import java.io.*; import java.net.*; -import jp.ac.u_ryukyu.treevnc.*; - +import com.glavsoft.viewer.Viewer; public class EchoClient { private String name; @@ -14,7 +13,7 @@ private boolean runflag = false; private WaitReply waitReply; private Socket clientSocket = null; - private MyVncClient client; + Viewer client; private int echoPort = 9999; public String parentAddress; public String parentNum; @@ -102,7 +101,7 @@ } catch (IOException e) { System.err.println("IOException: " + e); } - waitReply = new WaitReply(treeNum, client); + waitReply = new WaitReply(treeNum,this); waitReply.start(); } return this; @@ -142,7 +141,7 @@ return true; } - boolean notfoundParent() { + public boolean notfoundParent() { if (echoSocket != null && os != null && is != null) { runflag = true; try { @@ -205,9 +204,16 @@ } void reConnectionMain(Socket echoSocket) { - client.close(); - client.setClientSocket(echoSocket); - client.run(); + try { + client.close(); + client.setSocket(createSocketForClient(echoSocket)); + Thread.sleep(1000); + client.run(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } } void streamClose() throws IOException { @@ -253,4 +259,26 @@ Interruption(clientSocket); } } + + public void setViewer(Viewer v) { + client = v; + } + + 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); + } } \ No newline at end of file diff -r 1b81deb0abb3 -r b7d4d0349f99 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 12 13:16:47 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java Tue Sep 18 17:23:19 2012 +0900 @@ -19,7 +19,6 @@ import com.glavsoft.rfb.encoding.EncodingType; import com.glavsoft.rfb.protocol.ProtocolContext; import com.glavsoft.transport.Reader; -import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams; public class MyRfbProtoClient extends MyRfbProto { final static int FramebufferUpdate = 0; @@ -27,9 +26,8 @@ final static String versionMsg_3_855 = "RFB 003.855\n"; private static final int INFLATE_BUFSIZE = 1024 * 100; private Reader reader; - private EchoClient echoValue = new EchoClient(); - private String host, treenum, parent, pHost, leaderflag; - private int echoPort, port, acceptPort; + private String host; + private int port; Socket clientSocket, sock; DataInputStream is; OutputStream os; @@ -50,10 +48,6 @@ this.reader = reader; } - public void setParam(ConnectionParams connectionParams) { - pHost = connectionParams.hostName; - echoPort = connectionParams.portNumber; - } public boolean readProxyFlag() throws TransportException { int flag = reader.readUInt8(); @@ -66,7 +60,6 @@ public byte[] readEchoPort() throws Exception { byte[] b = new byte[4]; reader.readBytes(b, 0, b.length); - // readFully(b); return b; } @@ -89,7 +82,7 @@ void initServSock(int port) throws IOException { servSock = new ServerSocket(port); - acceptPort = port; +// acceptPort = port; } @Override diff -r 1b81deb0abb3 -r b7d4d0349f99 src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java Wed Sep 12 13:16:47 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java Tue Sep 18 17:23:19 2012 +0900 @@ -2,7 +2,6 @@ import java.awt.event.WindowEvent; import java.awt.event.WindowListener; -import java.net.Socket; import java.util.logging.Logger; import com.glavsoft.rfb.IChangeSettingsListener; @@ -118,14 +117,4 @@ @Override public void windowOpened(WindowEvent e) { /*nop*/ } - public void close() { - // TODO Auto-generated method stub - - } - - public void setClientSocket(Socket echoSocket) { - // TODO Auto-generated method stub - - } - } diff -r 1b81deb0abb3 -r b7d4d0349f99 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 12 13:16:47 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java Tue Sep 18 17:23:19 2012 +0900 @@ -4,15 +4,12 @@ import java.net.ServerSocket; import java.net.Socket; - public class WaitReply extends Thread { - MyVncClient client; boolean passflag; + EchoClient echo; - - - public WaitReply(String treenum, MyVncClient client) { - this.client = client; + public WaitReply(String treenum, EchoClient echo) { + this.echo = echo; } public boolean checkPath() { @@ -27,22 +24,14 @@ try { echoServer = new ServerSocket(10001); clientSocket = echoServer.accept(); - if (clientSocket != null) { - client.close(); - /* + echo.client.close(); passflag = true; - client.setClientSocket(clientSocket); - client.init(); - client.setEchoValue(null); - client.getParentName(); - client.start_threads(); - client.start(); - */ - client.run(); + echo.client.setSocket(echo.createSocketForClient(clientSocket)); + // client.init(); + echo.client.run(); echoServer.close(); } - } catch (IOException e) { System.out.println(e); } diff -r 1b81deb0abb3 -r b7d4d0349f99 src/viewer_swing/java/com/glavsoft/viewer/Viewer.java --- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Wed Sep 12 13:16:47 2012 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Tue Sep 18 17:23:19 2012 +0900 @@ -289,7 +289,8 @@ tryAgain = true; while (tryAgain) { - workingSocket = connectionManager.connectToHost(connectionParams, settings, rfb); + if(workingSocket==null) + workingSocket = connectionManager.connectToHost(connectionParams, settings, rfb); if (null == workingSocket) { closeApp(); break; @@ -318,6 +319,7 @@ connectionManager.setContainerFrame(containerFrame); updateFrameTitle(); if(rfb != null) { + rfb.setViewer(this); runAcceptThread(); rfb.setProtocolContext(workingProtocol); rfb.notProxy(); @@ -634,4 +636,21 @@ Viewer viewer = new Viewer(parser); SwingUtilities.invokeLater(viewer); } + + public void setSocket(Socket soc) { + workingSocket = soc; + } + + public void close() { + try { + workingProtocol.getWriter().close(); + workingProtocol.getReader().close(); + cleanUpUISessionAndConnection(); + } catch (IOException e) { + e.printStackTrace(); + } catch (TransportException e) { + e.printStackTrace(); + } + } + }