# HG changeset patch # User oc # Date 1412951984 -32400 # Node ID 6ee4cdca104c253a5c22c90c8762233254ba3c03 # Parent 0e0e6744432cc98308a132a6bf7ff3c9f23e90e9 send value of port and localhost in checkdelay framebufferupdate, and get this. diff -r 0e0e6744432c -r 6ee4cdca104c src/main/java/com/glavsoft/rfb/encoding/decoder/Decoder.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/Decoder.java Wed Oct 08 17:44:39 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/Decoder.java Fri Oct 10 23:39:44 2014 +0900 @@ -24,6 +24,8 @@ package com.glavsoft.rfb.encoding.decoder; +import java.io.UnsupportedEncodingException; + import com.glavsoft.drawing.Renderer; import com.glavsoft.exceptions.TransportException; import com.glavsoft.transport.Reader; @@ -33,9 +35,10 @@ /** * Decode rectangle data. + * @throws UnsupportedEncodingException */ abstract public void decode(Reader reader, Renderer renderer, - FramebufferUpdateRectangle rect) throws TransportException; + FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException; /** * Reset decoder when needed. Ex. reset ZLib stream inflaters for Z* and Tight decoders. diff -r 0e0e6744432c -r 6ee4cdca104c src/main/java/com/glavsoft/rfb/encoding/decoder/FramebufferUpdateRectangle.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/FramebufferUpdateRectangle.java Wed Oct 08 17:44:39 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/FramebufferUpdateRectangle.java Fri Oct 10 23:39:44 2014 +0900 @@ -24,6 +24,8 @@ package com.glavsoft.rfb.encoding.decoder; +import java.io.UnsupportedEncodingException; + import com.glavsoft.exceptions.TransportException; import com.glavsoft.rfb.encoding.EncodingType; import com.glavsoft.transport.Reader; @@ -44,6 +46,8 @@ public int height; private EncodingType encodingType; public long time; + public int port; + String localhost; public FramebufferUpdateRectangle() { // nop @@ -54,7 +58,7 @@ width = w; height = h; } - public void fill(Reader reader) throws TransportException { + public void fill(Reader reader) throws TransportException, UnsupportedEncodingException { x = reader.readUInt16(); y = reader.readUInt16(); width = reader.readUInt16(); @@ -64,6 +68,11 @@ encodingType = EncodingType.byId(encoding); if (encoding == 17) { time = reader.readInt64(); + port = reader.readInt32(); + int localhostlength = reader.readInt32(); + byte[] bytelocalhost = new byte[localhostlength]; + bytelocalhost = reader.readBytes(bytelocalhost, 0, localhostlength); + localhost = new String(bytelocalhost, "UTF-8"); // System.out.println("time = " + time); } } diff -r 0e0e6744432c -r 6ee4cdca104c src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java Wed Oct 08 17:44:39 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java Fri Oct 10 23:39:44 2014 +0900 @@ -1,5 +1,7 @@ package com.glavsoft.rfb.encoding.decoder; +import java.io.UnsupportedEncodingException; + import jp.ac.u_ryukyu.treevnc.TreeRFBProto; import com.glavsoft.drawing.Renderer; @@ -20,7 +22,7 @@ @Override public void decode(Reader reader, Renderer renderer, - FramebufferUpdateRectangle rect) throws TransportException { + FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException { // TreeVNC handling int dataLen = getZrleLength(rect, reader); byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()]; diff -r 0e0e6744432c -r 6ee4cdca104c src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Wed Oct 08 17:44:39 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Fri Oct 10 23:39:44 2014 +0900 @@ -267,8 +267,7 @@ int length = reader.readInt32(); reader.reset(); - - rfb.readSendData(length + 24, reader, null); + rfb.readSendData(length + 52, reader, null); // System.out.println("rect.time=" + rect.time); sendCheckDelayReply(rect.time); } else diff -r 0e0e6744432c -r 6ee4cdca104c src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Wed Oct 08 17:44:39 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Fri Oct 10 23:39:44 2014 +0900 @@ -2,6 +2,7 @@ import java.io.IOException; import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.net.BindException; import java.net.NetworkInterface; import java.net.ServerSocket; @@ -9,6 +10,7 @@ import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.util.Iterator; import java.util.LinkedList; import java.util.concurrent.atomic.AtomicInteger; import java.util.zip.DataFormatException; @@ -169,6 +171,7 @@ } else if (b[0] == ClientToServerMessage.CHECK_DELAY_REPLY) { ByteBuffer buf = ByteBuffer.wrap(b); buf.order(ByteOrder.BIG_ENDIAN); +// getNodeNum(port, hostname, localhostname); Long time = buf.getLong(2); Long delay = System.currentTimeMillis() - time; System.out.println("delay = " + delay); @@ -545,9 +548,10 @@ * @param dataLen * @param reader * @throws TransportException + * @throws UnsupportedEncodingException */ public void readSendData(int dataLen, Reader reader, byte[] bytes) - throws TransportException { + throws TransportException, UnsupportedEncodingException { LinkedList bufs = new LinkedList(); ByteBuffer header = multicastqueue.allocate(16); ByteBuffer serial = multicastqueue.allocate(8); @@ -565,7 +569,10 @@ if (i%20 == 0) { LinkedList checkdelay = new LinkedList(); long time = System.currentTimeMillis(); - checkdelay.add(new UpdateRectangleMessage(0, 0, 0, 0, time, EncodingType.CHECK_DELAY).getMessage()); + int port = 1234; + String localhost = "133.13.11.9"; + String mylocalhost = "localhost"; + checkdelay.add(new UpdateRectangleMessage(0, 0, 0, 0, time, port, localhost, EncodingType.CHECK_DELAY).getMessage()); this.addSerialNumber(checkdelay); multicastqueue.put(checkdelay); } i++; @@ -743,9 +750,21 @@ return reconnectingId; } - public void setShowTree(boolean showTree) { showTreeNode = showTree; } + public int getNodeNum(int port, String hostname, String localhostname) { + int nodeNum = 0; + + + + for (Iterator i = nodeList.iterator(); i.hasNext();) { + TreeVNCNode tvn = (TreeVNCNode)i.next(); + System.out.println("port = " + tvn.port + ", hostname = " + tvn.hostname + ", localhostname = " + tvn.localhostname + ", nodeNumber" + tvn.treeNum); + } + + return nodeNum; + + } } diff -r 0e0e6744432c -r 6ee4cdca104c src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java Wed Oct 08 17:44:39 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java Fri Oct 10 23:39:44 2014 +0900 @@ -1,5 +1,6 @@ package jp.ac.u_ryukyu.treevnc; +import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -7,47 +8,51 @@ public class UpdateRectangleMessage { - private ByteBuffer msg; - + private ByteBuffer msg; + + public UpdateRectangleMessage(int i, int j, int width, int height, long time, + int port, String localhost, EncodingType desktopSize) throws UnsupportedEncodingException { + byte[] bytelocalhost = localhost.getBytes("UTF-8"); - public UpdateRectangleMessage(int i, int j, int width, int height, long time, - EncodingType desktopSize) { - msg = ByteBuffer.allocate(24).order(ByteOrder.BIG_ENDIAN); - msg.put((byte) 0); // FrameBufferUpdate - msg.put((byte) 0); // padding - msg.putShort((short) 1); // number of rectangle - msg.putShort((short) i); - msg.putShort((short) j); - msg.putShort((short) width); - msg.putShort((short) height); - msg.putInt(desktopSize.getId()); - msg.putLong(time); - - msg.flip(); + msg = ByteBuffer.allocate(52).order(ByteOrder.BIG_ENDIAN); + msg.put((byte) 0); // FrameBufferUpdate + msg.put((byte) 0); // padding + msg.putShort((short) 1); // number of rectangle + msg.putShort((short) i); + msg.putShort((short) j); + msg.putShort((short) width); + msg.putShort((short) height); + msg.putInt(desktopSize.getId()); + msg.putLong(time); + msg.putInt(port); + msg.putInt(localhost.length()); + msg.put(bytelocalhost); + + msg.flip(); + + } - } - - public UpdateRectangleMessage(int width, int height, - EncodingType desktopSize, byte[] initData, short id) { - msg = ByteBuffer.allocate(16+4+initData.length).order(ByteOrder.BIG_ENDIAN); - msg.put((byte) 0); // FrameBufferUpdate - msg.put((byte) 0); // padding - msg.putShort((short) 1); // number of rectangle - msg.putShort((short) id); - msg.putShort((short) 0); - msg.putShort((short) width); - msg.putShort((short) height); - msg.putInt(desktopSize.getId()); - msg.putInt(initData.length); - msg.put(initData); - - msg.flip(); + public UpdateRectangleMessage(int width, int height, + EncodingType desktopSize, byte[] initData, short id) { + msg = ByteBuffer.allocate(16+4+initData.length).order(ByteOrder.BIG_ENDIAN); + msg.put((byte) 0); // FrameBufferUpdate + msg.put((byte) 0); // padding + msg.putShort((short) 1); // number of rectangle + msg.putShort((short) id); + msg.putShort((short) 0); + msg.putShort((short) width); + msg.putShort((short) height); + msg.putInt(desktopSize.getId()); + msg.putInt(initData.length); + msg.put(initData); - } - - public ByteBuffer getMessage(){ - return msg; - } + msg.flip(); + + } - + public ByteBuffer getMessage(){ + return msg; + } + + }