# HG changeset patch # User Shinji KONO # Date 1404286285 -32400 # Node ID 614db20d8fab379e379a396cd59d7080ac8c9f33 # Parent d9d2347158532e9bbd247da2dc895ed72b14d591 try to separate Network management diff -r d9d234715853 -r 614db20d8fab Todo.txt --- a/Todo.txt Fri Jun 27 21:37:20 2014 +0900 +++ b/Todo.txt Wed Jul 02 16:31:25 2014 +0900 @@ -1,6 +1,6 @@ Fri Jun 27 15:19:39 JST 2014 - 拡大縮小ボタンのバグを取る。 + 拡大縮小ボタンのバグを取る。Done! Multi-Network-Treeの作成 socketからNetMaskを検出 @@ -9,10 +9,14 @@ FindRootにはTreeMangerが応答する 下位のNodeのChangeVnCServerはそのTreeManagerが処理する 上位にHostameがからのChangerVnCserverを投げる - UpdateRectanleを上位のNetwoekに投げる + UpdateRectanleを上位のNetworkに投げる RootではUpdateRectangleを送り返す - myRfbProtoのwaitForReady()で新しいnetworkinterfaceを検出する + myRfbProtoのselectPort()でnetworkinterfaceを検出する + myRfbProtoのvncConnected()でvnc port の interface と Network を検出する + + 自分が、そのnetworkのrootになる条件は? + treeManagerをnetworkのhashmapで持つ。 setTreeManagerにnetworkの引数を追加する @@ -38,6 +42,9 @@ 下位のnodeはduplicated rootにつなげ直す。 もしduplicatedListになかったら、あきらめる。 + TreeManager は interface 別に作る Done! + Network address が LAN 外なら、その下に node は作らない。( そちらで勝手に作るのはあり ) + Thu Jun 25 20:55:00 JST 2014 diff -r d9d234715853 -r 614db20d8fab src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Fri Jun 27 21:37:20 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Wed Jul 02 16:31:25 2014 +0900 @@ -62,12 +62,11 @@ private boolean hasViewer = false; private boolean reconnecting; private short reconnectingId; // Change Server Request to id's node VNC server - private HashMap interfaces = new HashMap(); - private String vncInterface; - + private TreeVNCNetwork nets = new TreeVNCNetwork(); public MyRfbProto() { rThread = new RequestScreenThread(this); + nets.setMyRfb(this); } abstract public boolean isTreeManager() ; @@ -361,7 +360,7 @@ NetworkInterface ni = getInterface(vncSocket); if (ni!=null) { vncInterface = ni.getName(); - System.out.println("VNCNetworkInterface :" + ni.getName()); + System.out.println("VNCNetworkInterface :" + vncInterface); } sendDesktopSizeChange(reconnectingId); reconnecting = false; @@ -377,14 +376,6 @@ } } - private NetworkInterface getInterface(Socket vncSocket) { - InetAddress address = vncSocket.getInetAddress(); - try { - return NetworkInterface.getByInetAddress(address); - } catch (SocketException e) { - return null; - } - } public synchronized void waitForVNCConnection() throws InterruptedException { if (reconnectingId!=0) { @@ -706,23 +697,5 @@ return reconnectingId; } - public void getNetworkInterfaces() throws SocketException { - for (Enumeration e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) { - NetworkInterface ni; - ni = e.nextElement(); - if (ni.isUp() && ni.supportsMulticast() && !ni.isLoopback()) { - String hostName = ni.getInetAddresses().nextElement().getHostAddress(); - TreeManagement treeManager = new TreeManagement(hostName, ConnectionParams.DEFAULT_VNC_ROOT, viewer.getShowTree()); - treeManager.getList().getFirst().setPort(getAcceptPort()); - addNetworkInterface(ni, treeManager); - System.out.println("Interfaces :" + ni.getName()); - } - } - } - - private void addNetworkInterface(NetworkInterface ni, TreeManagement treeManager) { - interfaces.put(ni.getName(), treeManager); - } - } diff -r d9d234715853 -r 614db20d8fab src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNetwork.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNetwork.java Wed Jul 02 16:31:25 2014 +0900 @@ -0,0 +1,55 @@ +package jp.ac.u_ryukyu.treevnc; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.Socket; +import java.net.SocketException; +import java.util.Enumeration; +import java.util.HashMap; + +import jp.ac.u_ryukyu.treevnc.server.TreeManagement; + +import com.glavsoft.viewer.swing.ConnectionParams; + +public class TreeVNCNetwork { + + + private HashMap interfaces = new HashMap(); + private String vncInterface; + private MyRfbProto myRfb; + public MyRfbProto getMyRfb() { + return myRfb; + } + + public void setMyRfb(MyRfbProto myRfb) { + this.myRfb = myRfb; + } + + public void getNetworkInterfaces() throws SocketException { + for (Enumeration e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) { + NetworkInterface ni; + ni = e.nextElement(); + if (ni.isUp() && ni.supportsMulticast() && !ni.isLoopback()) { + String hostName = ni.getInetAddresses().nextElement().getHostAddress(); + TreeManagement treeManager = new TreeManagement(hostName, ConnectionParams.DEFAULT_VNC_ROOT, myRfb.getViewer().getShowTree()); + treeManager.getList().getFirst().setPort(myRfb.getAcceptPort()); + addNetworkInterface(ni, treeManager); + System.out.println("Interfaces :" + ni.getName()); + } + } + } + + private NetworkInterface getInterface(Socket vncSocket) { + InetAddress address = vncSocket.getInetAddress(); + try { + return NetworkInterface.getByInetAddress(address); + } catch (SocketException e) { + return null; + } + } + + private void addNetworkInterface(NetworkInterface ni, TreeManagement treeManager) { + interfaces.put(ni.getName(), treeManager); + } + +}