changeset 506:3fe7e1a372df

Multicast CUI
author toubaru
date Tue, 19 Feb 2019 15:59:50 +0900
parents af958194248b
children 89f1f7e41838
files .idea/modules.xml Todo.txt WifiBroadCast.mm doc/WifiBroadCast.mm src/main/java/jp/ac/u_ryukyu/treevnc/TreeRootFinderListener.java src/viewer_swing/java/com/glavsoft/viewer/ConnectionPresenter.java src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java src/viewer_swing/java/com/glavsoft/viewer/Viewer.java
diffstat 8 files changed, 102 insertions(+), 78 deletions(-) [+]
line wrap: on
line diff
--- a/.idea/modules.xml	Mon Feb 18 18:46:23 2019 +0900
+++ b/.idea/modules.xml	Tue Feb 19 15:59:50 2019 +0900
@@ -2,7 +2,6 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
-      <module fileurl="file://$PROJECT_DIR$/TreeVNC.iml" filepath="$PROJECT_DIR$/TreeVNC.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/modules/TreeVNC_main.iml" filepath="$PROJECT_DIR$/.idea/modules/TreeVNC_main.iml" group="TreeVNC" />
       <module fileurl="file://$PROJECT_DIR$/.idea/modules/TreeVNC_test.iml" filepath="$PROJECT_DIR$/.idea/modules/TreeVNC_test.iml" group="TreeVNC" />
       <module fileurl="file://$PROJECT_DIR$/.idea/modules/TreeVNC_viewerSwing.iml" filepath="$PROJECT_DIR$/.idea/modules/TreeVNC_viewerSwing.iml" group="TreeVNC" />
--- a/Todo.txt	Mon Feb 18 18:46:23 2019 +0900
+++ b/Todo.txt	Tue Feb 19 15:59:50 2019 +0900
@@ -1,3 +1,11 @@
+Tue Feb 19 15:01:43 JST 2019
+    マルチキャスト用のパラメーター
+      Packet size
+      Multicast Address
+        IPv6, IPv4 
+      Command line
+
+
 Wed Jan 30 18:55:55 JST 2019
    directconnection 時に nodeid を正しく設定する必要がある
 
--- a/WifiBroadCast.mm	Mon Feb 18 18:46:23 2019 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-<map version="0.9.0">
-<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
-<node CREATED="1375862208091" ID="ID_1435980750" MODIFIED="1375862329668" TEXT="WifiBroadCast">
-<node CREATED="1375862227074" ID="ID_1671888494" MODIFIED="1375862235198" POSITION="right" TEXT="&#x5b9f;&#x9a13;&#x306e;&#x76ee;&#x7684;">
-<node CREATED="1375862255760" ID="ID_159564438" MODIFIED="1375862324968" TEXT="TreeVNC&#x306b;Multicast&#x304c;&#x4f7f;&#x7528;&#x3067;&#x304d;&#x308b;&#x304b;&#x3069;&#x3046;&#x304b;&#x3092;&#x8abf;&#x3079;&#x308b;"/>
-</node>
-<node CREATED="1375862332655" ID="ID_675436470" MODIFIED="1375862894097" POSITION="left" TEXT="&#x5b9f;&#x9a13;&#x898f;&#x6a21;">
-<node CREATED="1375862337823" ID="ID_1026201136" MODIFIED="1375862805948" TEXT="&#x7121;&#x7dda;&#x30b9;&#x30c6;&#x30fc;&#x30b7;&#x30e7;&#x30f3;&#xff08;802.11a/g/b)&#xff09;">
-<node CREATED="1375862792648" ID="ID_1054538330" MODIFIED="1375862800938" TEXT="AirStation"/>
-<node CREATED="1375862807503" ID="ID_1441557306" MODIFIED="1375862824694" TEXT="AirMacStation"/>
-</node>
-<node CREATED="1375862422679" ID="ID_187514466" MODIFIED="1375862643954" TEXT="&#x30af;&#x30e9;&#x30a4;&#x30a2;&#x30f3;&#x30c8;&#x6570;">
-<node CREATED="1375862437097" ID="ID_1909771864" MODIFIED="1375862454492" TEXT="iMac"/>
-<node CREATED="1375862455240" ID="ID_1182721233" MODIFIED="1375862459019" TEXT="Mac pro"/>
-<node CREATED="1375862460975" ID="ID_60013417" MODIFIED="1375862471852" TEXT="Mac mini * 3"/>
-<node CREATED="1375862472495" ID="ID_848088782" MODIFIED="1375862483276" TEXT="Mac Book Pro * 10"/>
-</node>
-<node CREATED="1375862628620" ID="ID_1279234975" MODIFIED="1375862638705" TEXT="&#x76ee;&#x6a19;&#x6570;">
-<node CREATED="1375862694318" ID="ID_711725119" MODIFIED="1375862773148" TEXT="70(321&#x306e;&#x5b66;&#x751f;&#x6570;)"/>
-</node>
-<node CREATED="1375862895728" ID="ID_1713124083" MODIFIED="1375862931230" TEXT="&#x96fb;&#x6ce2;&#x306e;&#x72b6;&#x6cc1;">
-<node CREATED="1375862964723" ID="ID_248823562" MODIFIED="1375862987663" TEXT="&#x59a8;&#x5bb3;&#x96fb;&#x6ce2;&#x306e;&#x3042;&#x308b;&#x306a;&#x3057;"/>
-<node CREATED="1375863003123" ID="ID_1972998265" MODIFIED="1375863008536" TEXT="&#x30c8;&#x30e9;&#x30d5;&#x30a3;&#x30c3;&#x30af;&#x72b6;&#x6cc1;"/>
-<node CREATED="1375863024852" ID="ID_1727488162" MODIFIED="1375863121139" TEXT="&#x5834;&#x6240;(321&#x3068;611&#x3068;406)"/>
-</node>
-</node>
-<node CREATED="1375863131964" ID="ID_497519094" MODIFIED="1375863136962" POSITION="right" TEXT="&#x5b9f;&#x9a13;&#x5185;&#x5bb9;">
-<node CREATED="1375863157718" ID="ID_587883160" MODIFIED="1375863216132" TEXT="&#x30d1;&#x30b1;&#x30c3;&#x30c8;&#x306e;&#x30b5;&#x30a4;&#x30ba;(128byte~512Kbyte&#x307e;&#x3067;)"/>
-<node CREATED="1375863239656" ID="ID_1702750962" MODIFIED="1375863257171" TEXT="&#x30d1;&#x30b1;&#x30c3;&#x30c8;&#x306e;&#x500b;&#x6570;(10~100)"/>
-<node CREATED="1375863257798" ID="ID_1454190239" MODIFIED="1375863265065" TEXT="&#x30d7;&#x30ed;&#x30c8;&#x30b3;&#x30eb;">
-<node CREATED="1375863265066" ID="ID_763089742" MODIFIED="1375863272539" TEXT="Broadcast">
-<node CREATED="1375865442473" ID="ID_1358563788" MODIFIED="1375865453726" TEXT="&#xff13;"/>
-</node>
-<node CREATED="1375863273327" ID="ID_793864869" MODIFIED="1375865397800" TEXT="Multicast">
-<node CREATED="1375865397801" ID="ID_237048050" MODIFIED="1375865434158" TEXT="&#xff11;"/>
-</node>
-<node CREATED="1375863277191" ID="ID_677403240" MODIFIED="1375863279251" TEXT="TCP">
-<node CREATED="1375865422433" ID="ID_649935149" MODIFIED="1375865427182" TEXT="&#xff12;"/>
-</node>
-</node>
-<node CREATED="1375863294783" ID="ID_339954849" MODIFIED="1375863299829" TEXT="&#x6e2c;&#x5b9a;">
-<node CREATED="1375863303683" ID="ID_1050197818" MODIFIED="1375863308509" TEXT="&#x30d1;&#x30b1;&#x30c3;&#x30c8;&#x30ed;&#x30b9;&#x30c8;&#x7387;">
-<node CREATED="1375864091904" ID="ID_795745337" MODIFIED="1375864099068" TEXT="PC&#x5074;"/>
-<node CREATED="1375864099471" ID="ID_224074828" MODIFIED="1375864645981" TEXT="Switch&#x5074;"/>
-</node>
-<node CREATED="1375863309121" ID="ID_76819691" MODIFIED="1375863345502" TEXT="&#x30b9;&#x30eb;&#x30fc;&#x30d7;&#x30c3;&#x30c8;"/>
-<node CREATED="1375864647755" ID="ID_1762535066" MODIFIED="1375864653726" TEXT="&#x30d0;&#x30c3;&#x30d5;&#x30a1;&#x306e;&#x5927;&#x304d;&#x3055;"/>
-</node>
-</node>
-<node CREATED="1375864918215" ID="ID_1961357787" MODIFIED="1375864933425" POSITION="right" TEXT="TreeVNC&#x306e;&#x5909;&#x66f4;">
-<node CREATED="1375864933426" ID="ID_1171105144" MODIFIED="1375865060269" TEXT="Blocking(64K~)">
-<node CREATED="1375865060270" ID="ID_1594748367" MODIFIED="1375865064727" TEXT="&#x901f;&#x5ea6;"/>
-<node CREATED="1375865521003" ID="ID_1497362366" MODIFIED="1375865525104" TEXT="&#x4e26;&#x5217;&#x5316;"/>
-<node CREATED="1375865731959" ID="ID_1664410067" MODIFIED="1375865897884" TEXT="&#x5727;&#x7e2e;&#x306b;&#x4e92;&#x63db;&#x6027;&#x306e;&#x3042;&#x308b;&#x30a2;&#x30eb;&#x30b4;&#x30ea;&#x30ba;&#x30e0;&#x3092;&#x66f8;&#x304f;"/>
-</node>
-</node>
-</node>
-</map>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/WifiBroadCast.mm	Tue Feb 19 15:59:50 2019 +0900
@@ -0,0 +1,58 @@
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1375862208091" ID="ID_1435980750" MODIFIED="1375862329668" TEXT="WifiBroadCast">
+<node CREATED="1375862227074" ID="ID_1671888494" MODIFIED="1375862235198" POSITION="right" TEXT="&#x5b9f;&#x9a13;&#x306e;&#x76ee;&#x7684;">
+<node CREATED="1375862255760" ID="ID_159564438" MODIFIED="1375862324968" TEXT="TreeVNC&#x306b;Multicast&#x304c;&#x4f7f;&#x7528;&#x3067;&#x304d;&#x308b;&#x304b;&#x3069;&#x3046;&#x304b;&#x3092;&#x8abf;&#x3079;&#x308b;"/>
+</node>
+<node CREATED="1375862332655" ID="ID_675436470" MODIFIED="1375862894097" POSITION="left" TEXT="&#x5b9f;&#x9a13;&#x898f;&#x6a21;">
+<node CREATED="1375862337823" ID="ID_1026201136" MODIFIED="1375862805948" TEXT="&#x7121;&#x7dda;&#x30b9;&#x30c6;&#x30fc;&#x30b7;&#x30e7;&#x30f3;&#xff08;802.11a/g/b)&#xff09;">
+<node CREATED="1375862792648" ID="ID_1054538330" MODIFIED="1375862800938" TEXT="AirStation"/>
+<node CREATED="1375862807503" ID="ID_1441557306" MODIFIED="1375862824694" TEXT="AirMacStation"/>
+</node>
+<node CREATED="1375862422679" ID="ID_187514466" MODIFIED="1375862643954" TEXT="&#x30af;&#x30e9;&#x30a4;&#x30a2;&#x30f3;&#x30c8;&#x6570;">
+<node CREATED="1375862437097" ID="ID_1909771864" MODIFIED="1375862454492" TEXT="iMac"/>
+<node CREATED="1375862455240" ID="ID_1182721233" MODIFIED="1375862459019" TEXT="Mac pro"/>
+<node CREATED="1375862460975" ID="ID_60013417" MODIFIED="1375862471852" TEXT="Mac mini * 3"/>
+<node CREATED="1375862472495" ID="ID_848088782" MODIFIED="1375862483276" TEXT="Mac Book Pro * 10"/>
+</node>
+<node CREATED="1375862628620" ID="ID_1279234975" MODIFIED="1375862638705" TEXT="&#x76ee;&#x6a19;&#x6570;">
+<node CREATED="1375862694318" ID="ID_711725119" MODIFIED="1375862773148" TEXT="70(321&#x306e;&#x5b66;&#x751f;&#x6570;)"/>
+</node>
+<node CREATED="1375862895728" ID="ID_1713124083" MODIFIED="1375862931230" TEXT="&#x96fb;&#x6ce2;&#x306e;&#x72b6;&#x6cc1;">
+<node CREATED="1375862964723" ID="ID_248823562" MODIFIED="1375862987663" TEXT="&#x59a8;&#x5bb3;&#x96fb;&#x6ce2;&#x306e;&#x3042;&#x308b;&#x306a;&#x3057;"/>
+<node CREATED="1375863003123" ID="ID_1972998265" MODIFIED="1375863008536" TEXT="&#x30c8;&#x30e9;&#x30d5;&#x30a3;&#x30c3;&#x30af;&#x72b6;&#x6cc1;"/>
+<node CREATED="1375863024852" ID="ID_1727488162" MODIFIED="1375863121139" TEXT="&#x5834;&#x6240;(321&#x3068;611&#x3068;406)"/>
+</node>
+</node>
+<node CREATED="1375863131964" ID="ID_497519094" MODIFIED="1375863136962" POSITION="right" TEXT="&#x5b9f;&#x9a13;&#x5185;&#x5bb9;">
+<node CREATED="1375863157718" ID="ID_587883160" MODIFIED="1375863216132" TEXT="&#x30d1;&#x30b1;&#x30c3;&#x30c8;&#x306e;&#x30b5;&#x30a4;&#x30ba;(128byte~512Kbyte&#x307e;&#x3067;)"/>
+<node CREATED="1375863239656" ID="ID_1702750962" MODIFIED="1375863257171" TEXT="&#x30d1;&#x30b1;&#x30c3;&#x30c8;&#x306e;&#x500b;&#x6570;(10~100)"/>
+<node CREATED="1375863257798" ID="ID_1454190239" MODIFIED="1375863265065" TEXT="&#x30d7;&#x30ed;&#x30c8;&#x30b3;&#x30eb;">
+<node CREATED="1375863265066" ID="ID_763089742" MODIFIED="1375863272539" TEXT="Broadcast">
+<node CREATED="1375865442473" ID="ID_1358563788" MODIFIED="1375865453726" TEXT="&#xff13;"/>
+</node>
+<node CREATED="1375863273327" ID="ID_793864869" MODIFIED="1375865397800" TEXT="Multicast">
+<node CREATED="1375865397801" ID="ID_237048050" MODIFIED="1375865434158" TEXT="&#xff11;"/>
+</node>
+<node CREATED="1375863277191" ID="ID_677403240" MODIFIED="1375863279251" TEXT="TCP">
+<node CREATED="1375865422433" ID="ID_649935149" MODIFIED="1375865427182" TEXT="&#xff12;"/>
+</node>
+</node>
+<node CREATED="1375863294783" ID="ID_339954849" MODIFIED="1375863299829" TEXT="&#x6e2c;&#x5b9a;">
+<node CREATED="1375863303683" ID="ID_1050197818" MODIFIED="1375863308509" TEXT="&#x30d1;&#x30b1;&#x30c3;&#x30c8;&#x30ed;&#x30b9;&#x30c8;&#x7387;">
+<node CREATED="1375864091904" ID="ID_795745337" MODIFIED="1375864099068" TEXT="PC&#x5074;"/>
+<node CREATED="1375864099471" ID="ID_224074828" MODIFIED="1375864645981" TEXT="Switch&#x5074;"/>
+</node>
+<node CREATED="1375863309121" ID="ID_76819691" MODIFIED="1375863345502" TEXT="&#x30b9;&#x30eb;&#x30fc;&#x30d7;&#x30c3;&#x30c8;"/>
+<node CREATED="1375864647755" ID="ID_1762535066" MODIFIED="1375864653726" TEXT="&#x30d0;&#x30c3;&#x30d5;&#x30a1;&#x306e;&#x5927;&#x304d;&#x3055;"/>
+</node>
+</node>
+<node CREATED="1375864918215" ID="ID_1961357787" MODIFIED="1375864933425" POSITION="right" TEXT="TreeVNC&#x306e;&#x5909;&#x66f4;">
+<node CREATED="1375864933426" ID="ID_1171105144" MODIFIED="1375865060269" TEXT="Blocking(64K~)">
+<node CREATED="1375865060270" ID="ID_1594748367" MODIFIED="1375865064727" TEXT="&#x901f;&#x5ea6;"/>
+<node CREATED="1375865521003" ID="ID_1497362366" MODIFIED="1375865525104" TEXT="&#x4e26;&#x5217;&#x5316;"/>
+<node CREATED="1375865731959" ID="ID_1664410067" MODIFIED="1375865897884" TEXT="&#x5727;&#x7e2e;&#x306b;&#x4e92;&#x63db;&#x6027;&#x306e;&#x3042;&#x308b;&#x30a2;&#x30eb;&#x30b4;&#x30ea;&#x30ba;&#x30e0;&#x3092;&#x66f8;&#x304f;"/>
+</node>
+</node>
+</node>
+</map>
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRootFinderListener.java	Mon Feb 18 18:46:23 2019 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRootFinderListener.java	Tue Feb 19 15:59:50 2019 +0900
@@ -23,13 +23,14 @@
 	private ViewerInterface vps;
 	private MulticastSocket soc;
 	private SecurityManager securityManager;
+	private boolean isTreeRoot;
 
 	public TreeRootFinderListener(ViewerInterface vncProxyService) {
 		vps = vncProxyService;
+		isTreeRoot = vps.getRfb().isTreeManager();
 	}
 
 	public TreeRootFinderListener(ViewerInterface vncProxyService, ReceiverTask receiverTask) {
-		vps = vncProxyService;
 		this.receiverTask = receiverTask;
 	}
 
@@ -64,7 +65,7 @@
 				String hostname = recvPacket.getAddress().getHostAddress();
 		        byte[] reply = recvPacket.getData();
 				int len = recvPacket.getLength();
-				if (len == 12 && (reply[0] & 0xff) == TreeCommand.FIND_ROOT.cmd) {
+				if (isTreeRoot && len == 12 && (reply[0] & 0xff) == TreeCommand.FIND_ROOT.cmd) {
 					int port = reply[8];
 					port = port * 256 + reply[9];
 					port = port * 256 + reply[10];
@@ -72,12 +73,10 @@
 
 					TreeVncProtocol t = new TreeVncProtocol(hostname, port);
 					t.findRootReply(vps.getRfb().getAcceptPort());
-				} else {
-					if (receiverTask != null) {
-						receiverTask.setReader(new Reader(new ByteArrayInputStream(reply)));
-						if (receiverTask.getMessageId() == FRAMEBUFFER_UPDATE) {
-							receiverTask.framebufferUpdateMessage();
-						}
+				} else if (receiverTask != null) {
+					receiverTask.setReader(new Reader(new ByteArrayInputStream(reply)));
+					if (receiverTask.getMessageId() == FRAMEBUFFER_UPDATE) {
+						receiverTask.framebufferUpdateMessage();
 					}
 				}
 			}
--- a/src/viewer_swing/java/com/glavsoft/viewer/ConnectionPresenter.java	Mon Feb 18 18:46:23 2019 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/ConnectionPresenter.java	Tue Feb 19 15:59:50 2019 +0900
@@ -64,6 +64,8 @@
     private NetworkConnectionWorker networkConnectionWorker;
     private boolean needReconnection = true;
     private boolean isTreeVNC = false;
+
+    private boolean useMulticast = false;
     private boolean cuiVersion;
     private boolean noConnection = false;
     public ViewerInterface viewer;
@@ -461,4 +463,11 @@
         this.singleHeight = signleHeight;
     }
 
+    public void setMulticast(boolean b) {
+        useMulticast = b;
+    }
+
+    public boolean isUseMulticast() {
+        return useMulticast;
+    }
 }
--- a/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Mon Feb 18 18:46:23 2019 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Tue Feb 19 15:59:50 2019 +0900
@@ -26,6 +26,7 @@
     private boolean logFile = false;
     private boolean filterSingleDisplay = false;
     private boolean direct = false;
+    private boolean useMulticast = false;
 
 
     public static void main(String[] args) throws SocketException, UnknownHostException {
@@ -161,6 +162,9 @@
             } else if ("--checkDelay".equals(args[i])) {
                 // check flow of data delay.
                 checkDelay = true;
+            } else if ("--useMulticast".equals(args[i])) {
+                // check flow of data delay.
+                useMulticast = true;
             } else if ("--addSerialNum".equals(args[i])) {
                 // add data serial number.
                 addSerialNum = true;
@@ -197,6 +201,7 @@
                         + "--height h:              Set display height.\n"
                         + "--showTree:              Show connected tree node.\n"
                         + "--checkDelay:            Check speed flow of data each node.\n"
+                        + "--useMulticast:          Use Multicast\n"
                         + "--logFile logFileName:   Set log file name.\n"
                         + "--fixingSize w h:        Fix share screen size.\n"
                         + "--addSerialNum:          Check lost data.\n");
@@ -210,6 +215,9 @@
             v.setWidth(width);
             v.setHeight(height);
         }
+        if (useMulticast) {
+            v.getConnectionPresenter().setMulticast(true);
+        }
     }
 
     public void setFixingSizeDisplay(ViewerInterface v) {
--- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Mon Feb 18 18:46:23 2019 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java	Tue Feb 19 15:59:50 2019 +0900
@@ -350,19 +350,20 @@
     private ConnectionPresenter createNewConnectionPresenter(String hostName, short newVNCServerId, int x, int y, int width, int height, int scale) {
         final boolean hasJsch = checkJsch();
         final boolean allowInteractive = allowAppletInteractiveConnections || ! isApplet;
-        final ConnectionPresenter connectionPresenter = new ConnectionPresenter(hasJsch, allowInteractive);
+        final ConnectionPresenter connectionPresenter1 = new ConnectionPresenter(hasJsch, allowInteractive);
         ConnectionParams connectionParams = new ConnectionParams();
         connectionParams.setConnectionParam(hostName, vncport);
-        connectionPresenter.addModel("ConnectionParamsModel", connectionParams);
-        connectionPresenter.setConnectionParams(connectionParams);
-        connectionPresenter.setReconnectingId(newVNCServerId);
-        connectionPresenter.setIsTreeVNC(true);
-        connectionPresenter.setNoConnection(false);
-        connectionPresenter.setX(x);
-        connectionPresenter.setY(y);
-        connectionPresenter.setSingleWidth(width);
-        connectionPresenter.setSingleHeight(height);
-        connectionPresenter.setRetinaScale(scale);
+        connectionPresenter1.addModel("ConnectionParamsModel", connectionParams);
+        connectionPresenter1.setConnectionParams(connectionParams);
+        connectionPresenter1.setReconnectingId(newVNCServerId);
+        connectionPresenter1.setIsTreeVNC(true);
+        connectionPresenter1.setNoConnection(false);
+        connectionPresenter1.setX(x);
+        connectionPresenter1.setY(y);
+        connectionPresenter1.setSingleWidth(width);
+        connectionPresenter1.setSingleHeight(height);
+        connectionPresenter1.setRetinaScale(scale);
+        connectionPresenter1.setMulticast(connectionPresenter.isUseMulticast());
         // System.out.println("Sarver change accepted from id :" + newVNCServerId);
         return connectionPresenter;
     }