changeset 112:918dc3ee1c79

send composed data.
author oc
date Fri, 23 May 2014 21:48:50 +0900
parents a7988d3c0266
children bce2ef0a2e79
files src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java src/main/java/jp/ac/u_ryukyu/treevnc/client/ReconnectionWaiter.java
diffstat 3 files changed, 22 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- 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 {
--- 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
--- 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;
 			}