diff src/MyRfbProto.java @ 10:2840c7a259f1

add acceptThread
author e085711
date Sat, 16 Apr 2011 02:21:09 +0900
parents
children a5d73cafc8fe
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MyRfbProto.java	Sat Apr 16 02:21:09 2011 +0900
@@ -0,0 +1,108 @@
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+import java.util.LinkedList;
+
+
+class MyRfbProto extends RfbProto {
+
+	private ServerSocket servSock; 	
+	private byte initData[];
+	private LinkedList <Socket> cliList;
+	boolean MYVNC = true;
+	
+	
+	MyRfbProto(String h, int p, VncViewer v) throws IOException {
+		super(h, p, v);
+		cliList = new LinkedList <Socket>();
+	}
+
+	void initServSock(int port) throws IOException{
+		servSock = new ServerSocket(port);
+	}
+
+	void setSoTimeout(int num) throws IOException {
+		servSock.setSoTimeout(num);
+	}
+	
+	Socket accept() throws IOException {
+		return servSock.accept();
+	}
+
+	void addSock(Socket sock){
+		cliList.add(sock);
+	}
+	
+	void mark(int len) throws IOException {
+		is.mark(len);
+	}
+
+	void reset() throws IOException {
+		is.reset();
+	}
+
+	boolean markSupported() {
+		return is.markSupported();
+	}
+	
+	void readServerInit() throws IOException {
+		
+		mark(255);
+		skipBytes(20);
+		int nlen = readU32();
+		int blen = 20+4+nlen;
+		initData = new byte[blen];
+		reset();
+
+		mark(blen);
+		readFully(initData);
+		reset();
+		
+		framebufferWidth = readU16();
+		framebufferHeight = readU16();
+		bitsPerPixel = readU8();
+		depth = readU8();
+		bigEndian = (readU8() != 0);
+		trueColour = (readU8() != 0);
+		redMax = readU16();
+		greenMax = readU16();
+		blueMax = readU16();
+		redShift = readU8();
+		greenShift = readU8();
+		blueShift = readU8();
+		byte[] pad = new byte[3];
+		readFully(pad);
+		int nameLength = readU32();
+		byte[] name = new byte[nameLength];
+		readFully(name);
+		desktopName = new String(name);
+
+		// Read interaction capabilities (TightVNC protocol extensions)
+		if (protocolTightVNC) {
+			int nServerMessageTypes = readU16();
+			int nClientMessageTypes = readU16();
+			int nEncodingTypes = readU16();
+			readU16();
+			readCapabilityList(serverMsgCaps, nServerMessageTypes);
+			readCapabilityList(clientMsgCaps, nClientMessageTypes);
+			readCapabilityList(encodingCaps, nEncodingTypes);
+		}
+
+		inNormalProtocol = true;
+	}
+
+	void sendInitData(Socket sock) throws IOException{
+			sock.getOutputStream().write(initData);
+	}
+
+	void sendData(byte b[]) throws IOException{
+		for(Socket cli : cliList)
+			cli.getOutputStream().write(b, 0, b.length);		
+	}	
+
+	int cliSize(){
+		return cliList.size();
+	}	
+	
+}