changeset 118:df68f1f9034d

modify CreateThread.java
author e085711
date Sun, 07 Aug 2011 02:18:23 +0900
parents 65cb34c3f7ab
children 5e3487f06e22 2ff8d5a226c9
files src/myVncProxy/AcceptClient.java src/myVncProxy/AcceptThread.java src/myVncProxy/CreateThread.java
diffstat 3 files changed, 150 insertions(+), 134 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/AcceptClient.java	Sun Aug 07 01:45:51 2011 +0900
+++ b/src/myVncProxy/AcceptClient.java	Sun Aug 07 02:18:23 2011 +0900
@@ -20,139 +20,150 @@
 		new CreateThread(this);
 	}
 
+	// public synchronized void transferParentAddrerss(BufferedReader
+	// is,PrintStream os) {
 	public synchronized void transferParentAddrerss(BufferedReader is,PrintStream os) {
-		String line, port;
-		int intv_time = 100;
-		String request;
-		int treebranch = 2;// treeの子ノードの数
-		String leaderflag = "0", sendleaderflag = "0";
+		 String line, port;
+		 int intv_time = 100;
+		 String request;
+		 int treebranch = 2;// treeの子ノードの数 
+		 String leaderflag = "0", sendleaderflag = "0";
+		
+				// クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す
+				try {
+
+					while (true) {
+						line = is.readLine();
+						port = is.readLine();
+
+						System.out.println("データーを受信しましたlin=" + line
+								+ "       port=" + port);
+						// 自分の IPADRESSを取得する
+						InetAddress addr = InetAddress.getLocalHost();
+						String add = new String(addr.getHostAddress());
+
+						if ("1".equals(line)) {
+							System.out.println("親が落ちましたmessage" + port);
+							String checkRepetition = is.readLine();
+							os.println(ls.getLast());
+							parentnum = (Integer.parseInt(port) - 1)
+									/ treebranch;
+							String newparent = ls.get(parentnum);
 
-		// クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す
-		try {
-			while (true) {
-				line = is.readLine();
-				port = is.readLine();
+							counter--;
+							runflag = true;
+
+							sendleaderflag = decisionLeader(
+									Integer.parseInt(port), treebranch);
+
+							Child report = new Child();
+
+							report.reportLastNode(ls.getLast(), newparent,
+									port, String.valueOf(parentnum),
+									sendleaderflag, counter);
+
+							listupdate(port);
 
-				System.out.println("データーを受信しましたlin=" + line + "       port="
-						+ port);
-				// 自分の IPADRESSを取得する
-				InetAddress addr = InetAddress.getLocalHost();
-				String add = new String(addr.getHostAddress());
+							int g = 0;
+							for (String bs : ls) {
+								System.out.println(g + "番目" + bs);
+								g++;
+							}
+
+							os.println(port);
+							// os.println(leaderflag);
+
+							leaderflag = decisionLeader(
+									Integer.parseInt(checkRepetition),
+									treebranch);
+
+							if (Integer.parseInt(checkRepetition) == counter + 1) {
+								checkRepetition = "stop";
+							} else {
+								checkRepetition = "go";
+							}
+							os.println(checkRepetition);
 
-				if ("1".equals(line)) {
-					System.out.println("親が落ちましたmessage" + port);
-					String checkRepetition = is.readLine();
-					os.println(ls.getLast());
-					parentnum = (Integer.parseInt(port) - 1) / treebranch;
-					String newparent = ls.get(parentnum);
+							// os.println(leaderflag);
+							Thread.sleep(intv_time);
+							is.close();
+							os.close();
+
+						} else if ("2".equals(line)) {
+							parentnum = (Integer.parseInt(port) - 1)
+									/ treebranch;
+							String newparent = ls.get(parentnum);
+
+							outputStream(os, newparent,
+									String.valueOf(parentnum),
+									String.valueOf(counter), leaderflag);
 
-					counter--;
-					runflag = true;
+							os.close();
+							is.close();
+						} else if ("3".equals(line)) {
+							String checkRepetition = is.readLine();
+							System.out.println("落ちたのを確認しました");
+
+							os.println(ls.get(Integer.parseInt(port)));
+							os.println(port);
+
+							if (checkRepetition.equals(ls.getLast())) {
+								checkRepetition = "stop";
+							} else {
+								checkRepetition = "go";
+							}
+							os.println(checkRepetition);
 
-					sendleaderflag = decisionLeader(Integer.parseInt(port),
-							treebranch);
+							System.out.println("num4="
+									+ ls.get(Integer.parseInt(port)));
+							line = null;
+							runflag = false;
+							is.close();
+							os.close();
+						} else {
+							if (addrRegistor == true) {
+								ls.add(add);
+								addrRegistor = false;
+							}
 
-					Child report = new Child();
+							if (line != null) {
+								addClientAdress(line, ls);
+								counter++;
+							} else {
+								break;
+							}
 
-					report.reportLastNode(ls.getLast(), newparent, port,
-							String.valueOf(parentnum), sendleaderflag, counter);
+							if (counter >= treebranch + 1) {
 
-					listupdate(port);
+								leaderflag = decisionLeader(counter, treebranch);
+								parentnum = (counter - 1) / treebranch;
+
+								request = ls.get(parentnum);
+								System.out.println(parentnum);
 
-					int g = 0;
-					for (String bs : ls) {
-						System.out.println(g + "番目" + bs);
-						g++;
+								outputStream(os, request,
+										String.valueOf(parentnum),
+										String.valueOf(counter), leaderflag);
+
+								checkParameter(parentnum, counter, leaderflag);
+							} else {
+								// treeの親ノードに接続する人に接続する人を教える
+								outputStream(os, name, "0",
+										String.valueOf(counter), leaderflag);
+							}
+							Thread.sleep(intv_time);
+						}
 					}
 
-					os.println(port);
-					// os.println(leaderflag);
-
-					leaderflag = decisionLeader(
-							Integer.parseInt(checkRepetition), treebranch);
-
-					if (Integer.parseInt(checkRepetition) == counter + 1) {
-						checkRepetition = "stop";
-					} else {
-						checkRepetition = "go";
-					}
-					os.println(checkRepetition);
-
-					// os.println(leaderflag);
-					Thread.sleep(intv_time);
-					is.close();
-					os.close();
-
-				} else if ("2".equals(line)) {
-					parentnum = (Integer.parseInt(port) - 1) / treebranch;
-					String newparent = ls.get(parentnum);
-
-					outputStream(os, newparent, String.valueOf(parentnum),
-							String.valueOf(counter), leaderflag);
-
-					os.close();
-					is.close();
-				} else if ("3".equals(line)) {
-					String checkRepetition = is.readLine();
-					System.out.println("落ちたのを確認しました");
-
-					os.println(ls.get(Integer.parseInt(port)));
-					os.println(port);
-
-					if (checkRepetition.equals(ls.getLast())) {
-						checkRepetition = "stop";
-					} else {
-						checkRepetition = "go";
-					}
-					os.println(checkRepetition);
+				} catch (IOException e) {
+					System.out.println(e);
+				}
 
-					System.out
-							.println("num4=" + ls.get(Integer.parseInt(port)));
-					line = null;
-					runflag = false;
-					is.close();
-					os.close();
-				} else {
-					if (addrRegistor == true) {
-						ls.add(add);
-						addrRegistor = false;
-					}
-
-					if (line != null) {
-						addClientAdress(line, ls);
-						counter++;
-					} else {
-						break;
-					}
-
-					if (counter >= treebranch + 1) {
-	
-						leaderflag = decisionLeader(counter, treebranch);
-						parentnum = (counter - 1) / treebranch;
-						
-						request = ls.get(parentnum);
-						System.out.println(parentnum);
-
-						outputStream(os, request, String.valueOf(parentnum),
-								String.valueOf(counter), leaderflag);
-
-						checkParameter(parentnum, counter, leaderflag);
-					} else {
-						// treeの親ノードに接続する人に接続する人を教える
-						outputStream(os, name, "0", String.valueOf(counter),
-								leaderflag);
-					}
-					Thread.sleep(intv_time);
+				catch (InterruptedException e) {
+					e.printStackTrace();
 				}
-			}
-
-		} catch (IOException e) {
-			System.out.println(e);
-		}
-
-		catch (InterruptedException e) {
-			e.printStackTrace();
-		}
+		
+		
 	}
 
 	/**
@@ -198,7 +209,6 @@
 			return "1";
 		}
 	}
-	
 
 }
 
--- a/src/myVncProxy/AcceptThread.java	Sun Aug 07 01:45:51 2011 +0900
+++ b/src/myVncProxy/AcceptThread.java	Sun Aug 07 02:18:23 2011 +0900
@@ -1,4 +1,4 @@
-package myVncProxy;
+	package myVncProxy;
 import java.net.Socket;
 import java.io.IOException;
 import java.io.InputStream;
--- a/src/myVncProxy/CreateThread.java	Sun Aug 07 01:45:51 2011 +0900
+++ b/src/myVncProxy/CreateThread.java	Sun Aug 07 02:18:23 2011 +0900
@@ -7,37 +7,43 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 
-
-
 public class CreateThread implements Runnable {
 	ServerSocket echoServer;
 	AcceptClient acceptClient;
-	
 
-	public CreateThread(AcceptClient _acc){
+	public CreateThread(AcceptClient _acc) {
 		acceptClient = _acc;
 	}
-	
-	
+
+	void newEchoClient(final BufferedReader is,final PrintStream os) {
+		Runnable echoSender = new Runnable() {
+			public void run() {
+				acceptClient.transferParentAddrerss(is,os);
+			}
+		};
+		new Thread(echoSender).start();
+	}
+
 	public void run() {
-		
+
 		while (true) {
 			try {
 				echoServer = new ServerSocket(9999);
 				Socket clientSocket = echoServer.accept();
-				BufferedReader is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+				BufferedReader is = new BufferedReader(new InputStreamReader(
+						clientSocket.getInputStream()));
 				PrintStream os = new PrintStream(clientSocket.getOutputStream());
-				acceptClient.transferParentAddrerss(is,os);
-			} catch (IOException e){
+				newEchoClient(is,os);
+//				acceptClient.transferParentAddrerss(is, os);
+			} catch (IOException e) {
 				System.out.println(e);
 			}
 			try {
 				echoServer.close();
-			}
-			catch (IOException e){
+			} catch (IOException e) {
 				System.out.println(e);
 			}
-			
+
 		}
 
 	}