# HG changeset patch # User e085711 # Date 1303631319 -32400 # Node ID b51bb7bc0766157ef179aebad6e5f3f6d9fb4d2d # Parent 05ff813c04fe2cf82bd6d79fd0d8282a2dd3c5e4 test update diff -r 05ff813c04fe -r b51bb7bc0766 src/MyRfbProto.java --- 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 cliList; @@ -26,11 +32,27 @@ cliList = new LinkedList (); } - 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: + + + } } diff -r 05ff813c04fe -r b51bb7bc0766 src/ProxyVncCanvas.java --- 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(); diff -r 05ff813c04fe -r b51bb7bc0766 src/VncCanvas.java --- 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(); diff -r 05ff813c04fe -r b51bb7bc0766 src/VncProxyService.java --- 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(); - - } // diff -r 05ff813c04fe -r b51bb7bc0766 src/acceptThread.java --- 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();