changeset 23:b51bb7bc0766

test update
author e085711
date Sun, 24 Apr 2011 16:48:39 +0900
parents 05ff813c04fe
children 87b29d6039a6
files src/MyRfbProto.java src/ProxyVncCanvas.java src/VncCanvas.java src/VncProxyService.java src/acceptThread.java
diffstat 5 files changed, 56 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/MyRfbProto.java	Thu Apr 21 20:11:04 2011 +0900
+++ b/src/MyRfbProto.java	Sun Apr 24 16:48:39 2011 +0900
@@ -1,6 +1,7 @@
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.net.BindException;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.LinkedList;
@@ -10,9 +11,14 @@
 
 	private int messageType;
 	private int rectangles;
+	private int rectX;
+	private int rectY;
+	private int rectW;
+	private int rectH;
 	private int encoding;
 
-	private ServerSocket servSock; 	
+	private ServerSocket servSock;
+	private int acceptPort;
 	private byte initData[];
 	private LinkedList <Socket> cliList;
 	
@@ -26,11 +32,27 @@
 		cliList = new LinkedList <Socket>();
 	}
 	
-	
 	void initServSock(int port) throws IOException{
 		servSock = new ServerSocket(port);
+		acceptPort = port;
 	}
+	void selectPort(){
+		int i = 5550;
+		while(true){
+			try{
+				initServSock(i);
+				break;
+			}catch(BindException e){
+				i++;
+				continue;
+			}catch(IOException e){
 
+			}
+		}
+	}
+	int getAcceptPort(){
+		return acceptPort;
+	}
 	void setSoTimeout(int num) throws IOException {
 		servSock.setSoTimeout(num);
 	}
@@ -147,15 +169,36 @@
 		messageType = readU8();
 		skipBytes(1);
 		rectangles = readU16();
-		skipBytes(8);
+		rectX = readU16();
+		rectY = readU16();
+		rectW = readU16();
+		rectH = readU16();
 		encoding = readU32();	
-		reset();	
+		reset();
 	}
+	void checkAndMark() throws IOException{
+		switch(encoding){
+		case RfbProto.EncodingRaw:
+			mark(rectW * rectH * 4 + 16);		
+			break;
+		default:
+			mark(1000000);
+		}
+	}
+	
 	void printFramebufferUpdate(){
 	
 		System.out.println("messageType=" + messageType);
 		System.out.println("rectangles="+rectangles);
 		System.out.println("encoding=" + encoding);
+		switch(encoding){
+		case RfbProto.EncodingRaw:
+			System.out.println("rectW * rectH * 4 + 16 =" + rectW * rectH * 4 + 16);
+			break;
+		default:
+			
+		
+		}
 	}
 	
 	
--- a/src/ProxyVncCanvas.java	Thu Apr 21 20:11:04 2011 +0900
+++ b/src/ProxyVncCanvas.java	Sun Apr 24 16:48:39 2011 +0900
@@ -346,7 +346,6 @@
 		//
 
 		long count = 0;
-		rfb.initServSock(5550);
 
 		// single thread
 /*
@@ -370,9 +369,8 @@
 			count++;
 			
 			rfb.regiFramebufferUpdate();
+			rfb.checkAndMark();
 //			rfb.printFramebufferUpdate();
-			
-			rfb.mark(10000000);
 
 			int bufSize = (int)rfb.getNumBytesRead();
 			
--- a/src/VncCanvas.java	Thu Apr 21 20:11:04 2011 +0900
+++ b/src/VncCanvas.java	Sun Apr 24 16:48:39 2011 +0900
@@ -380,7 +380,7 @@
 		//
 
 		long count = 0;
-		rfb.initServSock(5550);
+
 /*
 		try {
 			// rfb.setSoTimeout(1000);
@@ -401,10 +401,10 @@
 			count++;
 			System.out.println("ready rfb.available()="+rfb.available());			
 			
+			rfb.regiFramebufferUpdate();
 			rfb.printFramebufferUpdate();
-
-//			rfb.mark(rfb.available());
-			rfb.mark(1000000);
+			rfb.checkAndMark();
+			
 			System.out.println("rfb.available()="+rfb.available());
 
 //			rfb.printNumBytesRead();
--- a/src/VncProxyService.java	Thu Apr 21 20:11:04 2011 +0900
+++ b/src/VncProxyService.java	Sun Apr 24 16:48:39 2011 +0900
@@ -71,8 +71,6 @@
 		rfbThread = new Thread(this);
 		rfbThread.start();
 		
-
-		
 	}
 
 	//
--- a/src/acceptThread.java	Thu Apr 21 20:11:04 2011 +0900
+++ b/src/acceptThread.java	Sun Apr 24 16:48:39 2011 +0900
@@ -1,3 +1,4 @@
+import java.net.BindException;
 import java.net.Socket;
 import java.io.IOException;
 
@@ -8,7 +9,10 @@
 		rfb = _rfb;
 	}
 
+
 	public void run() {
+		rfb.selectPort();
+		
 		while (true) {
 			try {
 				Socket newCli = rfb.accept();