comparison src/myVncProxy/MyRfbProto.java @ 43:08317224ce21

create RFB 003.998
author e085711
date Thu, 23 Jun 2011 07:03:21 +0900
parents dd1321b67f95
children ff1d1f236c8a
comparison
equal deleted inserted replaced
42:03d2e5db2135 43:08317224ce21
5 import java.io.BufferedOutputStream; 5 import java.io.BufferedOutputStream;
6 import java.io.BufferedReader; 6 import java.io.BufferedReader;
7 import java.io.ByteArrayInputStream; 7 import java.io.ByteArrayInputStream;
8 import java.io.ByteArrayOutputStream; 8 import java.io.ByteArrayOutputStream;
9 import java.io.IOException; 9 import java.io.IOException;
10 import java.io.InputStream;
10 import java.io.InputStreamReader; 11 import java.io.InputStreamReader;
11 import java.net.BindException; 12 import java.net.BindException;
12 import java.net.ServerSocket; 13 import java.net.ServerSocket;
13 import java.net.Socket; 14 import java.net.Socket;
14 import java.util.LinkedList; 15 import java.util.LinkedList;
19 import java.util.concurrent.Executors; 20 import java.util.concurrent.Executors;
20 import java.io.OutputStream; 21 import java.io.OutputStream;
21 22
22 class MyRfbProto extends RfbProto { 23 class MyRfbProto extends RfbProto {
23 24
25 final static String versionMsg_3_998 = "RFB 003.998\n";
26
27
24 private int messageType; 28 private int messageType;
25 private int rectangles; 29 private int rectangles;
26 private int rectX; 30 private int rectX;
27 private int rectY; 31 private int rectY;
28 private int rectW; 32 private int rectW;
62 sendThreads = new LinkedList <Thread>(); 66 sendThreads = new LinkedList <Thread>();
63 // executor = Executors.newCachedThreadPool(); 67 // executor = Executors.newCachedThreadPool();
64 executor = Executors.newSingleThreadExecutor(); 68 executor = Executors.newSingleThreadExecutor();
65 } 69 }
66 70
71 // override
72 void writeVersionMsg() throws IOException {
73 clientMajor = 3;
74 if (serverMinor >= 9) {
75 clientMinor = 9;
76 os.write(versionMsg_3_998.getBytes());
77 } else if (serverMajor > 3 || serverMinor >= 8) {
78 clientMinor = 8;
79 os.write(versionMsg_3_8.getBytes());
80 } else if (serverMinor >= 9) {
81 clientMinor = 9;
82 os.write(versionMsg_3_998.getBytes());
83 } else if (serverMinor >= 7) {
84 clientMinor = 7;
85 os.write(versionMsg_3_7.getBytes());
86 } else {
87 clientMinor = 3;
88 os.write(versionMsg_3_3.getBytes());
89 }
90 protocolTightVNC = false;
91 initCapabilities();
92 }
93
94
95
67 void initServSock(int port) throws IOException{ 96 void initServSock(int port) throws IOException{
68 servSock = new ServerSocket(port); 97 servSock = new ServerSocket(port);
69 acceptPort = port; 98 acceptPort = port;
70 } 99 }
71 void selectPort(){ 100 void selectPort(){
158 } 187 }
159 188
160 inNormalProtocol = true; 189 inNormalProtocol = true;
161 } 190 }
162 191
163 void sendInitData(Socket sock) throws IOException{ 192 void sendRfbVersion(OutputStream os) throws IOException{
164 sock.getOutputStream().write(initData); 193 os.write(versionMsg_3_998.getBytes());
194 }
195 void sendSecurityType(OutputStream os) throws IOException {
196 // number-of-security-types
197 os.write(1);
198 // security-types
199 // 1:None
200 os.write(1);
201 }
202 void readClientInit(InputStream in) throws IOException {
203 byte[] b = new byte[0];
204 in.read(b);
205 }
206
207 void sendInitData(OutputStream os) throws IOException{
208 os.write(initData);
165 } 209 }
166 210
167 void sendData(byte b[]){ 211 void sendData(byte b[]){
168 try{ 212 try{
169 for(Socket cli : cliList){ 213 for(Socket cli : cliList){
324 break; 368 break;
325 default: 369 default:
326 } 370 }
327 } 371 }
328 } 372 }
373
374