# HG changeset patch # User Yu Taninari # Date 1312664279 -32400 # Node ID 94df4d2bc5fe4ed4cd0d3e241a69c79445c307bf # Parent 5e3487f06e223efedd4d1f4d884fbb6b1a4115c8# Parent 32dbcb891835f0afad9dcec24f5985954fcf811c merge diff -r 32dbcb891835 -r 94df4d2bc5fe src/myVncProxy/AcceptClient.java --- a/src/myVncProxy/AcceptClient.java Sun Aug 07 05:26:01 2011 +0900 +++ b/src/myVncProxy/AcceptClient.java Sun Aug 07 05:57:59 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, add, "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, add, "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"; } } - } diff -r 32dbcb891835 -r 94df4d2bc5fe src/myVncProxy/AcceptThread.java --- a/src/myVncProxy/AcceptThread.java Sun Aug 07 05:26:01 2011 +0900 +++ b/src/myVncProxy/AcceptThread.java Sun Aug 07 05:57:59 2011 +0900 @@ -1,4 +1,4 @@ -package myVncProxy; + package myVncProxy; import java.net.Socket; import java.io.IOException; import java.io.InputStream; diff -r 32dbcb891835 -r 94df4d2bc5fe src/myVncProxy/CreateThread.java --- a/src/myVncProxy/CreateThread.java Sun Aug 07 05:26:01 2011 +0900 +++ b/src/myVncProxy/CreateThread.java Sun Aug 07 05:57:59 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); } - + } } diff -r 32dbcb891835 -r 94df4d2bc5fe src/myVncProxy/ProxyVncCanvas.java --- a/src/myVncProxy/ProxyVncCanvas.java Sun Aug 07 05:26:01 2011 +0900 +++ b/src/myVncProxy/ProxyVncCanvas.java Sun Aug 07 05:57:59 2011 +0900 @@ -3,12 +3,8 @@ import java.awt.event.*; import java.awt.image.*; import java.io.*; -import java.lang.*; -import java.nio.ByteBuffer; import java.util.zip.*; -import java.net.Socket; - import javax.imageio.ImageIO; // diff -r 32dbcb891835 -r 94df4d2bc5fe src/myVncProxy/VncProxyService.java --- a/src/myVncProxy/VncProxyService.java Sun Aug 07 05:26:01 2011 +0900 +++ b/src/myVncProxy/VncProxyService.java Sun Aug 07 05:57:59 2011 +0900 @@ -411,7 +411,7 @@ if (encodingsWereChanged) { try { - rfb.writeSetEncodings(encodings, nEncodings); + //rfb.writeSetEncodings(encodings, nEncodings); if (vc != null) { vc.softCursorFree(); }