changeset 64:3ec4c9e94462

update myVncProxy
author one
date Mon, 25 Jul 2011 20:47:20 +0900
parents 4864a7d1df00
children 343e0a107dfc e07844f7d884
files src/myVncProxy/CreateThread.java src/myVncProxy/VncProxyService.java src/myVncProxy/acceptClient.java
diffstat 3 files changed, 96 insertions(+), 67 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/CreateThread.java	Tue Jul 12 13:47:32 2011 +0900
+++ b/src/myVncProxy/CreateThread.java	Mon Jul 25 20:47:20 2011 +0900
@@ -9,8 +9,7 @@
 
 
 
-public class CreateThread extends Thread {
-	String args;
+public class CreateThread implements Runnable {
 	ServerSocket echoServer;
 	acceptClient acceptClient;
 	
--- a/src/myVncProxy/VncProxyService.java	Tue Jul 12 13:47:32 2011 +0900
+++ b/src/myVncProxy/VncProxyService.java	Mon Jul 25 20:47:20 2011 +0900
@@ -199,7 +199,8 @@
 	void connectAndAuthenticate() throws Exception {
 	    acc = new acceptClient(mainArgs[0]);
 	    geth = new CreateThread(acc);
-	    geth.start();
+	    Thread thread = new Thread(geth);
+	    thread.start();
 
 
 		showConnectionStatus("Initializing...");
--- a/src/myVncProxy/acceptClient.java	Tue Jul 12 13:47:32 2011 +0900
+++ b/src/myVncProxy/acceptClient.java	Mon Jul 25 20:47:20 2011 +0900
@@ -6,52 +6,27 @@
 import java.util.*;
 
 public class acceptClient extends Thread {
-	ServerSocket echoServer=null;
-	// ソケットや入出力用のストリームの宣言
-	String line,port,handover;
-	BufferedReader is;
-	PrintStream os;
-	Socket clientSocket = null;
-	int intv_time = 100;
-	int i = 0 , p = 0,t = 0;
-	//String[] sub = new String[100];
+	int counter = 0 , parentnum = 0,t = 0/*落ちたときの親の番号をカウントするためのもの*/;
 	LinkedList<String> ls = new LinkedList<String>();
-	String request,name;
-	int treebranch = 2;//treeの子ノードの数
-	String leaderflag="0",sendleaderflag="0";
-	boolean runflag =false,addrRegistor=true;
-	BufferedReader temp = null;//一時的にisを保存する変数
-	CreateThread createThread;
+	boolean runflag =false;
+	private String name; 
+	boolean addrRegistor=true;
 
 	public acceptClient(String _name) {
-		// TODO Auto-generated constructor stub
 		name = _name;
 	}
 	public acceptClient() {
 		new CreateThread(this);
 	}
 	
-	
-	
 	public synchronized void gethost(BufferedReader is,PrintStream os) {
-
-	//public synchronized void run () {
-		/*
-		while(true){
-			// ポート9999番を開く
-			try {
-				echoServer = new ServerSocket(9999);
-			}
-			catch (IOException e) {
-				System.out.println(e);
-			}
-
-			// クライアントからの要求を受けるソケットを開く 
-			try {
-				clientSocket = echoServer.accept();
-				is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
-				os = new PrintStream(clientSocket.getOutputStream());
-*/
+		String line,port,handover;
+		int intv_time = 100;
+		String request;
+		int treebranch = 2;//treeの子ノードの数
+		String leaderflag="0",sendleaderflag="0";//Socket send standardization String
+		
+		
 				// クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す
 		try {
 				while (true){	
@@ -66,26 +41,33 @@
 					if("1".equals(line)){
 						System.out.println("親が落ちましたmessage" + port);	
 						os.println(ls.getLast());
-						handover= String.valueOf((Integer.parseInt(port) - 1) / treebranch);
+						handover = String.valueOf((Integer.parseInt(port) - 1) / treebranch);
 						String hidenchild=ls.getLast();
 						String newparent=ls.get(Integer.parseInt(handover));
+						listupdate(port);
+						/*
 						ls.remove(Integer.parseInt(port));
 						ls.add(Integer.parseInt(port),ls.getLast());
 						ls.remove(Integer.parseInt(port));
-						i--;
+						*/
+						counter--;
 						t++;
 						runflag = true;
+						/*
 						if(t % treebranch == 0){
-							p--;
+							parentnum--;
 						}
-						if((i-1)%treebranch==1){ // children in most young treenum have leaderflag 1 other 0 
+						*/
+						parentnum = (Integer.parseInt(port) -1) / treebranch;
+						
+						if((counter-1)%treebranch==1){ // children in most young treenum have leaderflag 1 other 0 
 							sendleaderflag = "1";
 						}else{
 							sendleaderflag = "0";
 						}
 
 						child child = new child();
-						child.clost(hidenchild,newparent,os,port,handover,sendleaderflag,i);
+						child.clost(hidenchild,newparent,port,handover,sendleaderflag,counter);
 						os.println(port);	
 						Thread.sleep(intv_time);
 						is.close();
@@ -100,6 +82,12 @@
 
 						os.println(ls.get(Integer.parseInt(port)));
 						os.println(port);
+						int g = 0;
+						for(String bs: ls){
+							System.out.println(g+"番目"+bs);
+							g++;
+						}
+						System.out.println("num4=" + ls.get(Integer.parseInt(port)));
 						line=null;
 						runflag = false;
 						is.close();
@@ -109,40 +97,45 @@
 							ls.add(add);
 							addrRegistor = false;
 						}
-						System.out.println(p);
+						System.out.println(parentnum);
 						if(line != null){
-							sock conf = new sock();
-							conf.arg(line,ls);
-							i++;
+							arg(line,ls);
+							counter++;
 						}else{
 							break;
 						}
 
-						if(i>=treebranch+1){
-							if((i-1)%treebranch==0){
+						if(counter>=treebranch+1){
+							if((counter-1)%treebranch==0){
 								leaderflag = "1";
 							}else{
 								leaderflag = "0";
 							}
-							if((i-1)%treebranch==0){
-								p++;
+							/*
+							if((counter-1)%treebranch==0){
+								parentnum++;
 							}
+							*/
+							parentnum = (counter - 1) / treebranch;
 							//			request = [p-1];
-							request = ls.get(p);
+							request = ls.get(parentnum);
+							/*
 							os.println(request);
-							System.out.println("pの値="+p);
-							os.println(String.valueOf(p));
-							System.out.println("iの値="+i);
-							os.println(String.valueOf(i));
-							System.out.println("leaderflag="+leaderflag + "\n");
+							os.println(String.valueOf(parentnum));
+							os.println(String.valueOf(counter));
 							os.println(leaderflag);
+							*/
+							outputStream(os,request,String.valueOf(parentnum),String.valueOf(counter),leaderflag);
+							checkParameter(parentnum,counter,leaderflag);
 						}else{
 							//treeの親ノードに接続する人に接続する人を教える
-
-							os.println(add);//あとで渡されたmainArgs[1](現在はname)を渡す予定
+							outputStream(os,name,"0",String.valueOf(counter),leaderflag);
+							/*
+							os.println(name);//あとで渡されたmainArgs[1](現在はname)を渡す予定,addに変更
 							os.println("0");
-							os.println(String.valueOf(i));
-							os.println(leaderflag + "\n");
+							os.println(String.valueOf(counter));
+							os.println(leaderflag);
+							*/
 						}
 						Thread.sleep(intv_time);
 					}
@@ -165,11 +158,47 @@
 			*/
 		//} comment out while
 	}
+	
+	/**
+	 * @param port
+	 *   parent value
+	 */
+	void listupdate(String port) {
+		ls.remove(Integer.parseInt(port));
+		ls.add(Integer.parseInt(port),ls.getLast());
+		ls.removeLast();
+	}
+
+	void outputStream(PrintStream os,String request,String parentnum,String counter,String leaderflag) {
+		os.println(request);
+		os.println(parentnum);
+		os.println(counter);
+		os.println(leaderflag);
+	}
+	
+	void checkParameter(int parent,int counter,String leaderflag) {
+		System.out.println("pの値="+parentnum);
+		System.out.println("iの値="+counter);
+		System.out.println("leaderflag="+leaderflag + "\n");
+	}
+	
+	void arg(String line,LinkedList<String> ls) {
+		if(line != null){
+			ls.add(line);
+		}
+		int g=0;
+
+		for(String bs: ls){
+			System.out.println(g+"番目"+bs);
+			g++;
+		}
+	}
+	
 }
 
-
-class sock{
-	void arg(String line,LinkedList<String> ls){
+/*
+class sock {
+	void arg(String line,LinkedList<String> ls) {
 		if(line != null){
 			ls.add(line);
 		}
@@ -181,12 +210,12 @@
 		}
 	}
 }
-
+*/
 class child{
 	Socket echoSocket;
 	DataOutputStream os = null;
 	BufferedReader is = null;
-	void clost(String hiddenchild,String newparent,PrintStream rep,String newtreenum,String newpnum,String newleaderflag,int i) throws IOException{
+	void clost(String hiddenchild,String newparent,String newtreenum,String newpnum,String newleaderflag,int i) throws IOException{
 		try {
 
 			System.out.println(hiddenchild + "に接続します");