# HG changeset patch # User e085711 # Date 1310029966 -32400 # Node ID 76f5994f2af255b2cde04ab088b5e46df15cda75 # Parent 241f95cf0c0cbd968d8fb90dabea4b71ae201be9 modfy MyVncClient.java diff -r 241f95cf0c0c -r 76f5994f2af2 src/myVncClient/MyRfbProto.java --- a/src/myVncClient/MyRfbProto.java Thu Jul 07 16:04:40 2011 +0900 +++ b/src/myVncClient/MyRfbProto.java Thu Jul 07 18:12:46 2011 +0900 @@ -43,6 +43,8 @@ private LinkedList sendThreads; boolean createBimgFlag; + echoClient echo; + ExecutorService executor; @@ -248,6 +250,14 @@ try{ cli.getOutputStream().write(b, 0, b.length); }catch(IOException e){ + //insert + + System.out.println("lostchild"); + if("1".equals(echoClient.value.leaderflag)){ + echo = new echoClient(); + echo.openport(); + echo.lostchild(); + } // if socket closed cliList.remove(cli); } diff -r 241f95cf0c0c -r 76f5994f2af2 src/myVncClient/MyVncClient.java --- a/src/myVncClient/MyVncClient.java Thu Jul 07 16:04:40 2011 +0900 +++ b/src/myVncClient/MyVncClient.java Thu Jul 07 18:12:46 2011 +0900 @@ -170,6 +170,9 @@ } catch (EOFException e) { // insert + //window を消してnullを突っ込んでGCで削除させる。 + vncFrame.setVisible(false); + vncFrame = null; // リーダーの子ノードがproxyに対して親が落ちたことを報告をする if ("1".equals(echoClient.value.leaderflag)) { echo = new echoClient(); @@ -661,16 +664,10 @@ * port = readIntParameter("PORT", 5550); */ - if (mainArgs.length > 0) - host = mainArgs[0]; - else - host = "cls080.ie.u-ryukyu.ac.jp"; - if (value == null) { if (clientSocket == null) { echo = new echoClient(host); echo.openport(); - // value = echo.hostn(mainArgs[0]); value = echo.hostn("1"); } else { echo = new echoClient(); @@ -773,7 +770,7 @@ } return s; } - +/* for (int i = 0; i < mainArgs.length; i += 2) { if (mainArgs[i].equalsIgnoreCase(name)) { try { @@ -786,6 +783,7 @@ } } } +*/ if (required) { fatalError(name + " parameter not specified"); } @@ -1023,6 +1021,7 @@ v.inSeparateFrame = true; v.init(null); + v.start_threads(); v.start(); } @@ -1034,6 +1033,7 @@ v.inSeparateFrame = true; v.init(value); + v.start_threads(); v.start(); } diff -r 241f95cf0c0c -r 76f5994f2af2 src/myVncClient/VncCanvas.java --- a/src/myVncClient/VncCanvas.java Thu Jul 07 16:04:40 2011 +0900 +++ b/src/myVncClient/VncCanvas.java Thu Jul 07 18:12:46 2011 +0900 @@ -384,10 +384,6 @@ long count = 0; -/* - Thread accept = new Thread(new acceptThread(rfb)); - accept.start(); -*/ while (true) { // System.out.println("\ncount=" + count); diff -r 241f95cf0c0c -r 76f5994f2af2 src/myVncClient/echoClient.java --- a/src/myVncClient/echoClient.java Thu Jul 07 16:04:40 2011 +0900 +++ b/src/myVncClient/echoClient.java Thu Jul 07 18:12:46 2011 +0900 @@ -32,7 +32,7 @@ void openport(){ // ソケットや入出力用のストリームの宣言 - // ポート9999番を開く + // ポート9999番に接続 try { if(name != null){ echoSocket = new Socket(name, 9999); @@ -151,6 +151,7 @@ Thread.sleep(1000); MyVncClient.main(value); + // 開いたソケットなどをクローズ os.close(); is.close(); diff -r 241f95cf0c0c -r 76f5994f2af2 src/myVncClient/waitreply.java --- a/src/myVncClient/waitreply.java Thu Jul 07 16:04:40 2011 +0900 +++ b/src/myVncClient/waitreply.java Thu Jul 07 18:12:46 2011 +0900 @@ -8,7 +8,7 @@ echoClient echo; Socket clientSocket = null; ServerSocket echoServer=null; - + boolean mainFlag; waitreply(echoClient _echo){ echo = _echo; @@ -29,6 +29,7 @@ MyVncClient.main(clientSocket); //echo.Interruption(clientSocket); } + }catch (IOException e){ System.out.println(e); }