# HG changeset patch # User e085711 # Date 1307280646 -32400 # Node ID f399eec66846ed787c2a93aef84675cd133e44dd # Parent 84c02a9ce3eae5d729171b631e938745b3cb105c send data:multi thread diff -r 84c02a9ce3ea -r f399eec66846 build.xml --- a/build.xml Wed May 18 15:58:49 2011 +0900 +++ b/build.xml Sun Jun 05 22:30:46 2011 +0900 @@ -13,7 +13,7 @@ - + diff -r 84c02a9ce3ea -r f399eec66846 src/myVncProxy/MyRfbProto.java --- a/src/myVncProxy/MyRfbProto.java Wed May 18 15:58:49 2011 +0900 +++ b/src/myVncProxy/MyRfbProto.java Sun Jun 05 22:30:46 2011 +0900 @@ -16,6 +16,8 @@ import javax.imageio.ImageIO; +import org.omg.CORBA.portable.OutputStream; + class MyRfbProto extends RfbProto { @@ -27,12 +29,14 @@ private int rectH; private int encoding; private int zLen; + private int dataLen; private ServerSocket servSock; private int acceptPort; private byte initData[]; private LinkedList cliListTmp; private LinkedList cliList; + private LinkedList sendThreads; boolean createBimgFlag; byte[] pngBytes; @@ -42,6 +46,7 @@ cliList = new LinkedList (); cliListTmp = new LinkedList (); createBimgFlag = false; + sendThreads = new LinkedList (); } MyRfbProto(String h, int p) throws IOException { @@ -49,6 +54,7 @@ cliList = new LinkedList (); cliListTmp = new LinkedList (); createBimgFlag = false; + sendThreads = new LinkedList (); } void initServSock(int port) throws IOException{ @@ -205,6 +211,42 @@ readFully(buffer); sendData(buffer); } + void readSendData()throws IOException { + byte buffer[] = new byte[dataLen]; + readFully(buffer); + reset(); + + LinkedList threads; + threads = new LinkedList(); + + for(Socket cli : cliList){ +// try{ +// OutputStream out = (OutputStream) cli.getOutputStream(); +// Thread th = new Thread(new SendThread(out, buffer)); + Thread th = new Thread(new SendThread(cli, buffer)); + threads.add(th); +/* + }catch(IOException e){ + // if socket closed + cliListTmp.remove(cli); + }catch(Exception e){ + + } +*/ + } + + for(Thread thread : threads){ + thread.start(); + } + try{ + for(Thread thread : threads){ + thread.join(); + } + }catch(InterruptedException e){ + + } + + } void regiFramebufferUpdate()throws IOException{ mark(20); messageType = readU8(); @@ -222,10 +264,12 @@ void checkAndMark() throws IOException{ switch(encoding){ case RfbProto.EncodingRaw: - mark(rectW * rectH * 4 + 16); + dataLen = rectW * rectH * 4 + 16; + mark(dataLen); break; case RfbProto.EncodingZRLE: - mark(zLen+20); + dataLen = zLen+20; + mark(dataLen); break; default: mark(1000000); diff -r 84c02a9ce3ea -r f399eec66846 src/myVncProxy/ProxyVncCanvas.java --- a/src/myVncProxy/ProxyVncCanvas.java Wed May 18 15:58:49 2011 +0900 +++ b/src/myVncProxy/ProxyVncCanvas.java Sun Jun 05 22:30:46 2011 +0900 @@ -376,13 +376,15 @@ long count = 0; while (true) { +// System.out.println("\ncount=" + count); -// System.out.println("\ncount=" + count); count++; rfb.regiFramebufferUpdate(); rfb.checkAndMark(); // rfb.printFramebufferUpdate(); + rfb.readSendData(); + int bufSize = (int)rfb.getNumBytesRead(); @@ -540,8 +542,10 @@ bufSize = (int)rfb.getNumBytesRead() - bufSize; // System.out.println("bufSize="+bufSize); - rfb.bufResetSend(bufSize); +// rfb.bufResetSend(bufSize); + + if(rfb.createBimgFlag){ // bimg = createBufferedImage(rawPixelsImage); bimg = createBufferedImage(memImage); diff -r 84c02a9ce3ea -r f399eec66846 src/myVncProxy/VncCanvas.java --- a/src/myVncProxy/VncCanvas.java Wed May 18 15:58:49 2011 +0900 +++ b/src/myVncProxy/VncCanvas.java Sun Jun 05 22:30:46 2011 +0900 @@ -53,9 +53,9 @@ Image memImage; Graphics memGraphics; - + Image rawPixelsImage; -// BufferedImage rawPixelsImage; +// BufferedImage rawPixelsImaage; BufferedImage bimg; MemoryImageSource pixelsSource;