annotate src/MyRfbProto.java @ 10:9c7eab50c708

update MyRfbProto. add acceptThread
author e085711
date Sat, 16 Apr 2011 20:40:24 +0900
parents 2237c4a06427
children 1b2bca9583cb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
1 import java.io.IOException;
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
2 import java.net.ServerSocket;
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
3 import java.net.Socket;
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
4 import java.nio.ByteBuffer;
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
5 import java.util.LinkedList;
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
6
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
8 class MyRfbProto extends RfbProto {
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
9
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
10 private ServerSocket servSock;
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
11 private byte initData[];
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
12 private LinkedList <Socket> cliList;
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
13 boolean MYVNC = true;
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
14
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
15
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
16 MyRfbProto(String h, int p, VncViewer v) throws IOException {
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
17 super(h, p, v);
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
18 cliList = new LinkedList <Socket>();
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
19 }
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
20
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
21 void initServSock(int port) throws IOException{
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
22 servSock = new ServerSocket(port);
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
23 }
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
24
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
25 void setSoTimeout(int num) throws IOException {
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
26 servSock.setSoTimeout(num);
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
27 }
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
28
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
29 Socket accept() throws IOException {
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
30 return servSock.accept();
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
31 }
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
32
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
33 void addSock(Socket sock){
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
34 cliList.add(sock);
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
35 }
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
36
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
37 void mark(int len) throws IOException {
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
38 is.mark(len);
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
39 }
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
40
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
41 void reset() throws IOException {
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
42 is.reset();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
43 }
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
44
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
45 boolean markSupported() {
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
46 return is.markSupported();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
47 }
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
48
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
49 void readServerInit() throws IOException {
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
50
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
51 mark(255);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
52 skipBytes(20);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
53 int nlen = readU32();
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
54 int blen = 20+4+nlen;
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
55 initData = new byte[blen];
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
56 reset();
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
57
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
58 mark(blen);
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
59 readFully(initData);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
60 reset();
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
61
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
62 framebufferWidth = readU16();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
63 framebufferHeight = readU16();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
64 bitsPerPixel = readU8();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
65 depth = readU8();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
66 bigEndian = (readU8() != 0);
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
67 trueColour = (readU8() != 0);
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
68 redMax = readU16();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
69 greenMax = readU16();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
70 blueMax = readU16();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
71 redShift = readU8();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
72 greenShift = readU8();
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
73 blueShift = readU8();
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
74 byte[] pad = new byte[3];
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
75 readFully(pad);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
76 int nameLength = readU32();
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
77 byte[] name = new byte[nameLength];
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
78 readFully(name);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
79 desktopName = new String(name);
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
80
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
81 // Read interaction capabilities (TightVNC protocol extensions)
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
82 if (protocolTightVNC) {
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
83 int nServerMessageTypes = readU16();
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
84 int nClientMessageTypes = readU16();
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
85 int nEncodingTypes = readU16();
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
86 readU16();
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
87 readCapabilityList(serverMsgCaps, nServerMessageTypes);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
88 readCapabilityList(clientMsgCaps, nClientMessageTypes);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
89 readCapabilityList(encodingCaps, nEncodingTypes);
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
90 }
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
91
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
92 inNormalProtocol = true;
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
93 }
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
94
9
2237c4a06427 update MyRfbProto
e085711
parents: 8
diff changeset
95 void sendInitData(Socket sock) throws IOException{
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
96 sock.getOutputStream().write(initData);
8
efb8090ce9c3 update MyRfbProto
e085711
parents: 7
diff changeset
97 }
10
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
98
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
99 void sendData(byte b[]) throws IOException{
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
100 for(Socket cli : cliList)
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
101 cli.getOutputStream().write(b, 0, b.length);
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
102 }
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
103
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
104 int cliSize(){
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
105 return cliList.size();
9c7eab50c708 update MyRfbProto. add acceptThread
e085711
parents: 9
diff changeset
106 }
7
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
107
94c9e7825be2 add class MyRfbProto
e085711
parents:
diff changeset
108 }