# HG changeset patch # User oc # Date 1400849330 -32400 # Node ID 918dc3ee1c7943b28ee79a063d990fc4ac23de94 # Parent a7988d3c026682aa55ba8a62f1497b2b969b715e send composed data. diff -r a7988d3c0266 -r 918dc3ee1c79 src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Fri May 23 20:24:43 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Fri May 23 21:48:50 2014 +0900 @@ -265,7 +265,8 @@ } public void screenChangeRequest() throws TransportException { - new ScreenChangeRequest(echo.getMyAddress().getBytes()).send(context.getWriter()); + String adr = echo.getMyAddress(); + new ScreenChangeRequest(adr).send(context.getWriter()); } private void sendProxyFlag(Writer writer) throws TransportException { diff -r a7988d3c0266 -r 918dc3ee1c79 src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java Fri May 23 20:24:43 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java Fri May 23 21:48:50 2014 +0900 @@ -1,5 +1,8 @@ package jp.ac.u_ryukyu.treevnc; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + import com.glavsoft.exceptions.TransportException; import com.glavsoft.rfb.client.ClientToServerMessage; import com.glavsoft.transport.Writer; @@ -16,25 +19,28 @@ * length - U8 array - text */ public class ScreenChangeRequest implements ClientToServerMessage { - private final byte [] bytes; + private final String bytes; - public ScreenChangeRequest(byte[] bytes) { - this.bytes = bytes; - System.out.println("recieve change screen server request :" + bytes); + public ScreenChangeRequest(String adr) { + this.bytes = adr; + System.out.println("Client send change screen server request :" + adr); } @Override public void send(Writer writer) throws TransportException { - writer.write(SERVER_CHANGE_REQUEST); - writer.writeByte(0); - writer.writeInt16(0); // padding - writer.write(bytes.length); - writer.write(bytes); // TODO: [dime] convert 'text' String to byte arrya using right charset + ByteBuffer out = ByteBuffer.allocate(bytes.length()+16); + out.order(ByteOrder.BIG_ENDIAN); + out.put(SERVER_CHANGE_REQUEST); + out.put((byte)0); + out.putShort((byte)0); // padding + out.putInt(bytes.length()); + out.put(bytes.getBytes()); + writer.write(out.array(), 0, out.position()); writer.flush(); - } + } @Override public String toString() { - return "ClientCutTextMessage: [length: " + bytes.length +", text: ...]"; + return "Screen change request: [length: " + bytes.length() +", text: ...]" + new String (bytes); } } \ No newline at end of file diff -r a7988d3c0266 -r 918dc3ee1c79 src/main/java/jp/ac/u_ryukyu/treevnc/client/ReconnectionWaiter.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/ReconnectionWaiter.java Fri May 23 20:24:43 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/ReconnectionWaiter.java Fri May 23 21:48:50 2014 +0900 @@ -37,8 +37,9 @@ } catch (IOException e) { System.out.println(e); } finally { - try { - echoServer.close(); + try { + if (echoServer != null) + echoServer.close(); } catch (IOException e) { return; }