Mercurial > hg > Members > nobuyasu > tightVNCProxy
comparison src/myVncProxy/acceptClient.java @ 64:3ec4c9e94462
update myVncProxy
author | one |
---|---|
date | Mon, 25 Jul 2011 20:47:20 +0900 |
parents | 4864a7d1df00 |
children | e07844f7d884 |
comparison
equal
deleted
inserted
replaced
63:4864a7d1df00 | 64:3ec4c9e94462 |
---|---|
4 import java.io.*; | 4 import java.io.*; |
5 import java.net.*; | 5 import java.net.*; |
6 import java.util.*; | 6 import java.util.*; |
7 | 7 |
8 public class acceptClient extends Thread { | 8 public class acceptClient extends Thread { |
9 ServerSocket echoServer=null; | 9 int counter = 0 , parentnum = 0,t = 0/*落ちたときの親の番号をカウントするためのもの*/; |
10 // ソケットや入出力用のストリームの宣言 | |
11 String line,port,handover; | |
12 BufferedReader is; | |
13 PrintStream os; | |
14 Socket clientSocket = null; | |
15 int intv_time = 100; | |
16 int i = 0 , p = 0,t = 0; | |
17 //String[] sub = new String[100]; | |
18 LinkedList<String> ls = new LinkedList<String>(); | 10 LinkedList<String> ls = new LinkedList<String>(); |
19 String request,name; | 11 boolean runflag =false; |
20 int treebranch = 2;//treeの子ノードの数 | 12 private String name; |
21 String leaderflag="0",sendleaderflag="0"; | 13 boolean addrRegistor=true; |
22 boolean runflag =false,addrRegistor=true; | |
23 BufferedReader temp = null;//一時的にisを保存する変数 | |
24 CreateThread createThread; | |
25 | 14 |
26 public acceptClient(String _name) { | 15 public acceptClient(String _name) { |
27 // TODO Auto-generated constructor stub | |
28 name = _name; | 16 name = _name; |
29 } | 17 } |
30 public acceptClient() { | 18 public acceptClient() { |
31 new CreateThread(this); | 19 new CreateThread(this); |
32 } | 20 } |
33 | 21 |
34 | |
35 | |
36 public synchronized void gethost(BufferedReader is,PrintStream os) { | 22 public synchronized void gethost(BufferedReader is,PrintStream os) { |
37 | 23 String line,port,handover; |
38 //public synchronized void run () { | 24 int intv_time = 100; |
39 /* | 25 String request; |
40 while(true){ | 26 int treebranch = 2;//treeの子ノードの数 |
41 // ポート9999番を開く | 27 String leaderflag="0",sendleaderflag="0";//Socket send standardization String |
42 try { | 28 |
43 echoServer = new ServerSocket(9999); | 29 |
44 } | |
45 catch (IOException e) { | |
46 System.out.println(e); | |
47 } | |
48 | |
49 // クライアントからの要求を受けるソケットを開く | |
50 try { | |
51 clientSocket = echoServer.accept(); | |
52 is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); | |
53 os = new PrintStream(clientSocket.getOutputStream()); | |
54 */ | |
55 // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す | 30 // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す |
56 try { | 31 try { |
57 while (true){ | 32 while (true){ |
58 line = is.readLine(); | 33 line = is.readLine(); |
59 port = is.readLine(); | 34 port = is.readLine(); |
64 String add = new String(addr.getHostAddress()); | 39 String add = new String(addr.getHostAddress()); |
65 | 40 |
66 if("1".equals(line)){ | 41 if("1".equals(line)){ |
67 System.out.println("親が落ちましたmessage" + port); | 42 System.out.println("親が落ちましたmessage" + port); |
68 os.println(ls.getLast()); | 43 os.println(ls.getLast()); |
69 handover= String.valueOf((Integer.parseInt(port) - 1) / treebranch); | 44 handover = String.valueOf((Integer.parseInt(port) - 1) / treebranch); |
70 String hidenchild=ls.getLast(); | 45 String hidenchild=ls.getLast(); |
71 String newparent=ls.get(Integer.parseInt(handover)); | 46 String newparent=ls.get(Integer.parseInt(handover)); |
47 listupdate(port); | |
48 /* | |
72 ls.remove(Integer.parseInt(port)); | 49 ls.remove(Integer.parseInt(port)); |
73 ls.add(Integer.parseInt(port),ls.getLast()); | 50 ls.add(Integer.parseInt(port),ls.getLast()); |
74 ls.remove(Integer.parseInt(port)); | 51 ls.remove(Integer.parseInt(port)); |
75 i--; | 52 */ |
53 counter--; | |
76 t++; | 54 t++; |
77 runflag = true; | 55 runflag = true; |
56 /* | |
78 if(t % treebranch == 0){ | 57 if(t % treebranch == 0){ |
79 p--; | 58 parentnum--; |
80 } | 59 } |
81 if((i-1)%treebranch==1){ // children in most young treenum have leaderflag 1 other 0 | 60 */ |
61 parentnum = (Integer.parseInt(port) -1) / treebranch; | |
62 | |
63 if((counter-1)%treebranch==1){ // children in most young treenum have leaderflag 1 other 0 | |
82 sendleaderflag = "1"; | 64 sendleaderflag = "1"; |
83 }else{ | 65 }else{ |
84 sendleaderflag = "0"; | 66 sendleaderflag = "0"; |
85 } | 67 } |
86 | 68 |
87 child child = new child(); | 69 child child = new child(); |
88 child.clost(hidenchild,newparent,os,port,handover,sendleaderflag,i); | 70 child.clost(hidenchild,newparent,port,handover,sendleaderflag,counter); |
89 os.println(port); | 71 os.println(port); |
90 Thread.sleep(intv_time); | 72 Thread.sleep(intv_time); |
91 is.close(); | 73 is.close(); |
92 os.close(); | 74 os.close(); |
93 | 75 |
98 }else if("3".equals(line)){ | 80 }else if("3".equals(line)){ |
99 System.out.println("落ちたのを確認しました"); | 81 System.out.println("落ちたのを確認しました"); |
100 | 82 |
101 os.println(ls.get(Integer.parseInt(port))); | 83 os.println(ls.get(Integer.parseInt(port))); |
102 os.println(port); | 84 os.println(port); |
85 int g = 0; | |
86 for(String bs: ls){ | |
87 System.out.println(g+"番目"+bs); | |
88 g++; | |
89 } | |
90 System.out.println("num4=" + ls.get(Integer.parseInt(port))); | |
103 line=null; | 91 line=null; |
104 runflag = false; | 92 runflag = false; |
105 is.close(); | 93 is.close(); |
106 os.close(); | 94 os.close(); |
107 }else{ | 95 }else{ |
108 if(addrRegistor==true){ | 96 if(addrRegistor==true){ |
109 ls.add(add); | 97 ls.add(add); |
110 addrRegistor = false; | 98 addrRegistor = false; |
111 } | 99 } |
112 System.out.println(p); | 100 System.out.println(parentnum); |
113 if(line != null){ | 101 if(line != null){ |
114 sock conf = new sock(); | 102 arg(line,ls); |
115 conf.arg(line,ls); | 103 counter++; |
116 i++; | |
117 }else{ | 104 }else{ |
118 break; | 105 break; |
119 } | 106 } |
120 | 107 |
121 if(i>=treebranch+1){ | 108 if(counter>=treebranch+1){ |
122 if((i-1)%treebranch==0){ | 109 if((counter-1)%treebranch==0){ |
123 leaderflag = "1"; | 110 leaderflag = "1"; |
124 }else{ | 111 }else{ |
125 leaderflag = "0"; | 112 leaderflag = "0"; |
126 } | 113 } |
127 if((i-1)%treebranch==0){ | 114 /* |
128 p++; | 115 if((counter-1)%treebranch==0){ |
116 parentnum++; | |
129 } | 117 } |
118 */ | |
119 parentnum = (counter - 1) / treebranch; | |
130 // request = [p-1]; | 120 // request = [p-1]; |
131 request = ls.get(p); | 121 request = ls.get(parentnum); |
122 /* | |
132 os.println(request); | 123 os.println(request); |
133 System.out.println("pの値="+p); | 124 os.println(String.valueOf(parentnum)); |
134 os.println(String.valueOf(p)); | 125 os.println(String.valueOf(counter)); |
135 System.out.println("iの値="+i); | |
136 os.println(String.valueOf(i)); | |
137 System.out.println("leaderflag="+leaderflag + "\n"); | |
138 os.println(leaderflag); | 126 os.println(leaderflag); |
127 */ | |
128 outputStream(os,request,String.valueOf(parentnum),String.valueOf(counter),leaderflag); | |
129 checkParameter(parentnum,counter,leaderflag); | |
139 }else{ | 130 }else{ |
140 //treeの親ノードに接続する人に接続する人を教える | 131 //treeの親ノードに接続する人に接続する人を教える |
141 | 132 outputStream(os,name,"0",String.valueOf(counter),leaderflag); |
142 os.println(add);//あとで渡されたmainArgs[1](現在はname)を渡す予定 | 133 /* |
134 os.println(name);//あとで渡されたmainArgs[1](現在はname)を渡す予定,addに変更 | |
143 os.println("0"); | 135 os.println("0"); |
144 os.println(String.valueOf(i)); | 136 os.println(String.valueOf(counter)); |
145 os.println(leaderflag + "\n"); | 137 os.println(leaderflag); |
138 */ | |
146 } | 139 } |
147 Thread.sleep(intv_time); | 140 Thread.sleep(intv_time); |
148 } | 141 } |
149 } | 142 } |
150 | 143 |
163 System.out.println(e); | 156 System.out.println(e); |
164 } | 157 } |
165 */ | 158 */ |
166 //} comment out while | 159 //} comment out while |
167 } | 160 } |
168 } | 161 |
169 | 162 /** |
170 | 163 * @param port |
171 class sock{ | 164 * parent value |
172 void arg(String line,LinkedList<String> ls){ | 165 */ |
166 void listupdate(String port) { | |
167 ls.remove(Integer.parseInt(port)); | |
168 ls.add(Integer.parseInt(port),ls.getLast()); | |
169 ls.removeLast(); | |
170 } | |
171 | |
172 void outputStream(PrintStream os,String request,String parentnum,String counter,String leaderflag) { | |
173 os.println(request); | |
174 os.println(parentnum); | |
175 os.println(counter); | |
176 os.println(leaderflag); | |
177 } | |
178 | |
179 void checkParameter(int parent,int counter,String leaderflag) { | |
180 System.out.println("pの値="+parentnum); | |
181 System.out.println("iの値="+counter); | |
182 System.out.println("leaderflag="+leaderflag + "\n"); | |
183 } | |
184 | |
185 void arg(String line,LinkedList<String> ls) { | |
173 if(line != null){ | 186 if(line != null){ |
174 ls.add(line); | 187 ls.add(line); |
175 } | 188 } |
176 int g=0; | 189 int g=0; |
177 | 190 |
178 for(String bs: ls){ | 191 for(String bs: ls){ |
179 System.out.println(g+"番目"+bs); | 192 System.out.println(g+"番目"+bs); |
180 g++; | 193 g++; |
181 } | 194 } |
182 } | 195 } |
196 | |
183 } | 197 } |
184 | 198 |
199 /* | |
200 class sock { | |
201 void arg(String line,LinkedList<String> ls) { | |
202 if(line != null){ | |
203 ls.add(line); | |
204 } | |
205 int g=0; | |
206 | |
207 for(String bs: ls){ | |
208 System.out.println(g+"番目"+bs); | |
209 g++; | |
210 } | |
211 } | |
212 } | |
213 */ | |
185 class child{ | 214 class child{ |
186 Socket echoSocket; | 215 Socket echoSocket; |
187 DataOutputStream os = null; | 216 DataOutputStream os = null; |
188 BufferedReader is = null; | 217 BufferedReader is = null; |
189 void clost(String hiddenchild,String newparent,PrintStream rep,String newtreenum,String newpnum,String newleaderflag,int i) throws IOException{ | 218 void clost(String hiddenchild,String newparent,String newtreenum,String newpnum,String newleaderflag,int i) throws IOException{ |
190 try { | 219 try { |
191 | 220 |
192 System.out.println(hiddenchild + "に接続します"); | 221 System.out.println(hiddenchild + "に接続します"); |
193 echoSocket = new Socket(hiddenchild, 10001 + (i + 1));//i+1は実験中に同じマシーンを使っていたのでportを変えて対応、本番時には取り除く予定。 | 222 echoSocket = new Socket(hiddenchild, 10001 + (i + 1));//i+1は実験中に同じマシーンを使っていたのでportを変えて対応、本番時には取り除く予定。 |
194 | 223 |