3
|
1 package ac.ryukyu.treevnc.client;
|
|
2
|
|
3 import java.io.BufferedInputStream;
|
|
4 import java.io.DataInputStream;
|
|
5 import java.io.DataOutputStream;
|
|
6 import java.io.IOException;
|
|
7 import java.io.InputStream;
|
|
8 import java.io.OutputStream;
|
|
9 import java.net.InetAddress;
|
|
10 import java.net.Socket;
|
|
11 import java.nio.ByteBuffer;
|
|
12
|
|
13
|
|
14
|
|
15 import com.glavsoft.exceptions.TransportException;
|
|
16 import com.glavsoft.transport.Reader;
|
|
17 import com.glavsoft.viewer.ContainerManager;
|
|
18 import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams;
|
|
19
|
|
20 public class MyRfbProtoClient {
|
|
21 private Reader reader;
|
|
22 private EchoClient echoValue = new EchoClient();
|
|
23 private String host,treenum,parent,pHost,leaderflag;
|
|
24 private int echoPort,port;
|
|
25 Socket clientSocket,sock;
|
|
26 DataInputStream is;
|
|
27 OutputStream os;
|
|
28 private ContainerManager containerManager;
|
|
29
|
|
30
|
|
31
|
|
32 public MyRfbProtoClient(Reader reader,String host,String port) {
|
|
33 this.reader = reader;
|
|
34 }
|
|
35
|
|
36 public void setParam(ConnectionParams connectionParams) {
|
|
37 pHost = connectionParams.hostName;
|
|
38 echoPort = connectionParams.portNumber;
|
|
39 }
|
|
40
|
|
41 public boolean readProxyFlag() throws TransportException {
|
|
42 int flag = reader.readUInt8();
|
|
43 if(flag == 1)
|
|
44 return true;
|
|
45 else
|
|
46 return false;
|
|
47 }
|
|
48
|
|
49 public byte[] readEchoPort() throws Exception {
|
|
50 byte[] b = new byte[4];
|
|
51 reader.readBytes(b, 0, b.length);
|
|
52 //readFully(b);
|
|
53 return b;
|
|
54 }
|
|
55
|
|
56 public void getParentName() {
|
|
57 if (echoValue == null) {
|
|
58
|
|
59 if (clientSocket == null) {
|
|
60
|
|
61 // echo = new EchoClient(pHost, this);
|
|
62 echoValue = new EchoClient(pHost, echoPort);
|
|
63 echoValue.openport();
|
|
64
|
|
65 echoValue = echoValue.requestHostName("1");
|
|
66 } else {
|
|
67 echoValue = new EchoClient();
|
|
68 echoValue = echoValue.Interruption(clientSocket);
|
|
69 }
|
|
70 }
|
|
71 // proxyからの返信で接続先を決定する
|
|
72 host = echoValue.responseLine;
|
|
73 parent = echoValue.parent;
|
|
74 if (echoValue.treenum != null) {
|
|
75 treenum = echoValue.treenum;
|
|
76 } else {
|
|
77 treenum = echoValue.treenum;
|
|
78 }
|
|
79
|
|
80 if (echoValue.leaderflag != null) {
|
|
81 leaderflag = echoValue.leaderflag;
|
|
82 } else {
|
|
83 leaderflag = echoValue.leaderflag;
|
|
84 }
|
|
85 }
|
|
86
|
|
87 int castByteInt(byte[] b) {
|
|
88 ByteBuffer bb = ByteBuffer.wrap(b);
|
|
89 int value = bb.getInt();
|
|
90 return value;
|
|
91 }
|
|
92
|
|
93 Socket changeParent(String host, int port) throws IOException {
|
|
94 sock = new Socket(host, port);
|
|
95 return sock;
|
|
96 }
|
|
97
|
|
98 }
|