# HG changeset patch # User oc # Date 1421674742 -32400 # Node ID 7ef19658eb41cf9e26aeff4b58c2bd681cc2fdc9 # Parent ae7deb002b5fac6a20183e2b6522313a7b91626a add createOriginalInitData(). diff -r ae7deb002b5f -r 7ef19658eb41 src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java --- a/src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ProtocolContext.java Mon Jan 19 22:39:02 2015 +0900 @@ -86,7 +86,7 @@ * */ public enum TreeCommand { - FIND_ROOT ( 220), + FIND_ROOT (220), FIND_ROOT_REPLY (221), WHERE_TO_CONNECT (222), CONNECT_TO (223), @@ -112,7 +112,7 @@ case 226: return NOT_FOUND_PARENT ; case 227: return NEW_NODE ; case 228: default: - return QUIT_LOOP; + return QUIT_LOOP; } } } diff -r ae7deb002b5f -r 7ef19658eb41 src/main/java/com/glavsoft/rfb/protocol/state/HandshakeState.java --- a/src/main/java/com/glavsoft/rfb/protocol/state/HandshakeState.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/state/HandshakeState.java Mon Jan 19 22:39:02 2015 +0900 @@ -38,6 +38,7 @@ public static final String PROTOCOL_VERSION_3_7 = "3.7"; public static final String PROTOCOL_VERSION_3_3 = "3.3"; public static final int PROTOCOL_STRING_LENGTH = 12; + private static final String PROTOCOL_STRING_REGEXP = "^RFB (\\d\\d\\d).(\\d\\d\\d)\n$"; private static final int MIN_SUPPORTED_VERSION_MAJOR = 3; diff -r ae7deb002b5f -r 7ef19658eb41 src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Mon Jan 19 22:39:02 2015 +0900 @@ -81,7 +81,7 @@ rThread = new RequestScreenThread(this); nets.setMyRfb(this); this.isTreeManager = isTreeManager; - this.socket = createSocket(); +// this.socket = createSocket(); } public boolean isTreeManager() { diff -r ae7deb002b5f -r 7ef19658eb41 src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommand.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommand.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommand.java Mon Jan 19 22:39:02 2015 +0900 @@ -21,7 +21,7 @@ private short value; public String intf; - public TreeVncCommand(TreeRFBProto rfb,String myHostName, TreeCommand command, int port, String hostname, String intf, short value) { +public TreeVncCommand(TreeRFBProto rfb, String myHostName, TreeCommand command, int port, String hostname, String intf, short value) { this.rfb = rfb; this.myHostName = myHostName; this.hostname = hostname; diff -r ae7deb002b5f -r 7ef19658eb41 src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommandChannelListener.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommandChannelListener.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncCommandChannelListener.java Mon Jan 19 22:39:02 2015 +0900 @@ -163,7 +163,7 @@ byte[] readVersionMsg(Reader reader, Writer writer) throws IOException, TransportException { - byte[] b = new byte[HandshakeState.PROTOCOL_STRING_LENGTH ]; + byte[] b = new byte[HandshakeState.PROTOCOL_STRING_LENGTH]; reader.readBytes(b); @@ -218,18 +218,32 @@ in.readBytes(b); } - byte initData[] = {7, -128, 4, 56, 32, 24, 0, 1, 0, -1, 0, -1, 0, -1, 16, 8, 0, 0, 0, 0, 0, 0, 0, 7, 103, 105, 114, 101, 102, 108, 121}; void sendInitData(Writer os) throws TransportException { + int hdWidth = 1920; + int hdHeight = 1080; + byte[] initData = createOriginalInitData(hdWidth, hdHeight); // In case of "-d" we have no context ProtocolContext context = rfb.context; if (context != null){ - os.write(context.getInitData()); +// os.write(context.getInitData()); + os.write(initData); } else { // Send dummy data os.write(initData); } } + private byte[] createOriginalInitData(int width, int height) { + byte[] tail = {32, 24, 0, 1, 0, -1, 0, -1, 0, -1, 16, 8, 0, 0, 0, 0, 0, 0, 0, 7, 103, 105, 114, 101, 102, 108, 121}; + ByteBuffer initData = ByteBuffer.allocate(31); + initData.putChar((char) width); + initData.putChar((char) height); + initData.put(tail); + initData.flip(); + + return initData.array(); + } + public void waitForShutdown() { if (acceptThread!=null) try { diff -r ae7deb002b5f -r 7ef19658eb41 src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncProtocol.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncProtocol.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVncProtocol.java Mon Jan 19 22:39:02 2015 +0900 @@ -7,72 +7,71 @@ import com.glavsoft.rfb.protocol.ProtocolContext.TreeCommand; public class TreeVncProtocol { - private BufferedReader is = null; - private DataOutputStream os = null; - private Socket echoSocket = null; - private int rootPort; - private String rootAddress; + private BufferedReader is = null; + private DataOutputStream os = null; + private Socket echoSocket = null; + private int rootPort; + private String rootAddress; private int singleWidth; private int singleHeight; - - public TreeVncProtocol(String name, int echoPort) { - this.rootPort = echoPort; - this.rootAddress = name; - } + + public TreeVncProtocol(String name, int echoPort) { + this.rootPort = echoPort; + this.rootAddress = name; + } public void setSingleSize(int singleWidth, int singleHeight) { this.singleWidth = singleWidth; this.singleHeight = singleHeight; } - public void openport() throws IOException { - echoSocket = new Socket(rootAddress, rootPort); - // echoSocket.setReuseAddress(true); - os = new DataOutputStream(echoSocket.getOutputStream()); - is = new BufferedReader(new InputStreamReader( - echoSocket.getInputStream())); - } + public void openport() throws IOException { + echoSocket = new Socket(rootAddress, rootPort); + // echoSocket.setReuseAddress(true); + os = new DataOutputStream(echoSocket.getOutputStream()); + is = new BufferedReader(new InputStreamReader( + echoSocket.getInputStream())); + } - public void findRootReply(int port) throws IOException { - sendWithHostAndPort(TreeCommand.FIND_ROOT_REPLY, null, port, (short) 0); - } + public void findRootReply(int port) throws IOException { + sendWithHostAndPort(TreeCommand.FIND_ROOT_REPLY, null, port, (short) 0); + } - public void whereToConnect(String hostname, int port) throws IOException { + public void whereToConnect(String hostname, int port) throws IOException { sendWithHostAndPort(TreeCommand.WHERE_TO_CONNECT, hostname, port, (short) 0); - } + } - public void connectTo(String hostname, int port,int leaderFlag, short yourId) throws IOException{ - TreeCommand command = leaderFlag == 1 ? TreeCommand.CONNECT_TO_AS_LEADER : TreeCommand.CONNECT_TO; + public void connectTo(String hostname, int port,int leaderFlag, short yourId) throws IOException{ + TreeCommand command = leaderFlag == 1 ? TreeCommand.CONNECT_TO_AS_LEADER : TreeCommand.CONNECT_TO; sendWithHostAndPort(command , hostname, port, yourId); - } + } - public void lostParent(String hostname, int port) throws IOException { + public void lostParent(String hostname, int port) throws IOException { sendWithHostAndPort(TreeCommand.LOST_PARENT, hostname, port, (short) 0); - } - - public void sendWithHostAndPort(TreeCommand command, String hostname, int port, short value) - throws IOException { - openport(); - if (hostname == null) { - // in case of root finder, we can't get localaddress from datagram packet. - // so use local part of TCP socket. - hostname = echoSocket.getLocalAddress().getHostAddress(); - } - int cmdlen = 4+4+4+hostname.length(); - if (cmdlen < 12) cmdlen=12; - ByteBuffer buf = ByteBuffer.allocate(cmdlen); - buf.order(ByteOrder.BIG_ENDIAN); - buf.put((byte) command.cmd); - - buf.put((byte) 0); - buf.putShort(value); - buf.putInt(4+hostname.length()); // length - buf.putInt(port); - buf.put(hostname.getBytes(), 0, hostname.length()); - while (buf.hasRemaining() ) buf.put((byte)0) ; + } + + public void sendWithHostAndPort(TreeCommand command, String hostname, int port, short value) + throws IOException { + openport(); + if (hostname == null) { + // in case of root finder, we can't get localaddress from datagram packet. + // so use local part of TCP socket. + hostname = echoSocket.getLocalAddress().getHostAddress(); + } + int cmdlen = 4+4+4+hostname.length(); + if (cmdlen < 12) cmdlen=12; + ByteBuffer buf = ByteBuffer.allocate(cmdlen); + buf.order(ByteOrder.BIG_ENDIAN); + buf.put((byte) command.cmd); + buf.put((byte) 0); + buf.putShort(value); + buf.putInt(4+hostname.length()); // length + buf.putInt(port); + buf.put(hostname.getBytes(), 0, hostname.length()); + while (buf.hasRemaining() ) buf.put((byte)0) ; buf.flip(); - sendCommandToTheRoot(buf); - } + sendCommandToTheRoot(buf); + } public void sendCommandToTheRoot(ByteBuffer buf) throws IOException { char[] charBuf = new char[12]; @@ -81,10 +80,10 @@ streamClose(); } - void streamClose() throws IOException { - os.close(); - is.close(); - echoSocket.close(); - } + void streamClose() throws IOException { + os.close(); + is.close(); + echoSocket.close(); + } } \ No newline at end of file diff -r ae7deb002b5f -r 7ef19658eb41 src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionsHistory.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionsHistory.java Sun Jan 18 08:36:06 2015 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionsHistory.java Mon Jan 19 22:39:02 2015 +0900 @@ -261,7 +261,7 @@ if (uiSettingsData != null) { uiSettingsDataMap.put(new ConnectionParams(connectionParams), new UiSettingsData(uiSettingsData)); } - uiSettingsData.setScalePercent(50); + uiSettingsData.setScalePercent(100); } /**