changeset 13:406fa09ae645

modify VncProxyService.java
author one
date Wed, 22 Aug 2012 20:05:26 +0900
parents 12c3a73be47f
children ff01665d26b4
files src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java
diffstat 4 files changed, 58 insertions(+), 119 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Tue Aug 21 14:24:38 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java	Wed Aug 22 20:05:26 2012 +0900
@@ -2,34 +2,22 @@
 
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
-import java.io.IOException;
 import java.util.logging.Logger;
 
 import javax.swing.SwingUtilities;
 
 
-import com.glavsoft.exceptions.AuthenticationFailedException;
-import com.glavsoft.exceptions.FatalException;
-import com.glavsoft.exceptions.TransportException;
-import com.glavsoft.exceptions.UnsupportedProtocolVersionException;
-import com.glavsoft.exceptions.UnsupportedSecurityTypeException;
 import com.glavsoft.rfb.IChangeSettingsListener;
 import com.glavsoft.rfb.IRfbSessionListener;
-import com.glavsoft.rfb.protocol.Protocol;
 import com.glavsoft.rfb.protocol.ProtocolSettings;
-import com.glavsoft.transport.Reader;
-import com.glavsoft.transport.Writer;
-import com.glavsoft.viewer.ConnectionManager;
 import com.glavsoft.viewer.TreeConnectionManager;
 import com.glavsoft.viewer.Viewer;
 import com.glavsoft.viewer.cli.Parser;
-import com.glavsoft.viewer.swing.ClipboardControllerImpl;
 import com.glavsoft.viewer.swing.ParametersHandler;
-import com.glavsoft.viewer.swing.Surface;
 import com.glavsoft.viewer.swing.UiSettings;
 import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams;
 
-
+// "Viewer.java" location is src/viewer_swing/java/com/glavsoft/viewer.
 public class MyVncClient extends Viewer implements IRfbSessionListener,
 	WindowListener, IChangeSettingsListener {
 
@@ -37,17 +25,12 @@
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	// private boolean runflag = false;
-
 	boolean isClient = false;
 	public static final int DEFAULT_PORT = 5900;
 	public static Logger logger = Logger.getLogger("com.glavsoft");
-	private boolean forceReconnection;
-	private String reconnectionReason;
 	private ConnectionParams connectionParams;
 	private final ProtocolSettings settings;
 	private final UiSettings uiSettings;
-	private String[] arguments;
 	private TreeConnectionManager treeConnectionManager;
 	
 	
@@ -69,15 +52,11 @@
 
 	public void treeVncClient(String[] argv) {
 		new MyVncClient();
-		//v.runClient(argv);
 	}
 
-	// private void runClient(String[] argv) {
 	public static void main(String[] argv) {
 		String[] mainArgs = argv;
 		System.out.println(mainArgs.length);
-		// input into arguments Decision
-
 		Parser parser = new Parser();
 		ParametersHandler.completeParserOptions(parser);
 
@@ -94,82 +73,9 @@
 	public void setType() {
 		super.setType(treeConnectionManager);
 	}
-	
-	public void mainLoop() {
-	//	getHostData();
-		if (forceReconnection) {
-			treeConnectionManager.showReconnectDialog("Connection lost", reconnectionReason);
-			forceReconnection = false;
-		}
-		tryAgain = true;
-		while (tryAgain) {
-		  connectionParams.hostName = arguments[0];
-		//	workingSocket = connectionManager.connectToTreeHost(connectionParams, settings);
-			workingSocket = treeConnectionManager.connectToHost(connectionParams, settings);
-			if (null == workingSocket) {
-				closeApp();
-				break;
-			}
-			logger.info("Connected");
-
-			try {
-				workingSocket.setTcpNoDelay(true); // disable Nagle algorithm
-				Reader reader = new Reader(workingSocket.getInputStream());
-				Writer writer = new Writer(workingSocket.getOutputStream());
-				
-				workingProtocol = new Protocol(reader, writer,
-						new PasswordChooser(passwordFromParams, connectionParams, containerFrame, this),
-						settings);
-
-				workingProtocol.handshake();
-				// input into change parents
-                ClipboardControllerImpl clipboardController =
-		                new ClipboardControllerImpl(workingProtocol, settings.getRemoteCharsetName());
-				clipboardController.setEnabled(settings.isAllowClipboardTransfer());
-				settings.addListener(clipboardController);
-
-				surface = new Surface(workingProtocol, this, uiSettings.getScaleFactor());
-				settings.addListener(this);
-				uiSettings.addListener(surface);
-				containerFrame = createContainer();
-				treeConnectionManager.setContainerFrame(containerFrame);
-				updateFrameTitle();
-
-				workingProtocol.startNormalHandling(this, surface, clipboardController);
-				tryAgain = false;
-			} catch (UnsupportedProtocolVersionException e) {
-				treeConnectionManager.showReconnectDialog("Unsupported Protocol Version", e.getMessage());
-				logger.severe(e.getMessage());
-			} catch (UnsupportedSecurityTypeException e) {
-				treeConnectionManager.showReconnectDialog("Unsupported Security Type", e.getMessage());
-				logger.severe(e.getMessage());
-			} catch (AuthenticationFailedException e) {
-				passwordFromParams = null;
-				treeConnectionManager.showReconnectDialog("Authentication Failed", e.getMessage());
-				logger.severe(e.getMessage());
-			} catch (TransportException e) {
-				treeConnectionManager.showReconnectDialog("Connection Error", "Connection Error" + ": " + e.getMessage());
-				logger.severe(e.getMessage());
-			} catch (IOException e) {
-				treeConnectionManager.showReconnectDialog("Connection Error", "Connection Error" + ": " + e.getMessage());
-				logger.severe(e.getMessage());
-			} catch (FatalException e) {
-				treeConnectionManager.showReconnectDialog("Connection Error", "Connection Error" + ": " + e.getMessage());
-				logger.severe(e.getMessage());
-			}
-		}
-
-	}
 
 
-	public void setArgments(String[] args) {
-		arguments = args;
-	}
-
-
-	@Override
 	public void destroy() {
-		// TODO Auto-generated method stub
 
 	}
 
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java	Tue Aug 21 14:24:38 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptClient.java	Wed Aug 22 20:05:26 2012 +0900
@@ -7,14 +7,14 @@
 import java.util.*;
 
 public class AcceptClient {
-	private int counter = 0, parentnum = 0 /* 落ちたときの親の番号をカウントするためのもの */;
+	private int counter = 0, parentnum = 0;
 	private LinkedList<String> ls = new LinkedList<String>();
 	private boolean addrRegistor = true;
 	private int passNumber=0,numberZone;
 	boolean runflag = false;
 	//private String name;
 	private int passCheck = 0;
-	private final int treebranch = 2; // treeの子ノードの数 
+	private final int treebranch = 2; 
 	private String newparent,request,myAddress;
 	private String leaderflag = "0", sendleaderflag = "0";
 	private final int intv_time = 100;
@@ -35,7 +35,6 @@
 	// public synchronized void transferParentAddrerss(BufferedReader
 	// is,PrintStream os) {
 	public void transferParentAddrerss(BufferedReader is,PrintStream os) {
-		// クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す
 		try {
 			while (true) {
 				String line = is.readLine();
@@ -219,7 +218,6 @@
 					String.valueOf(counter), leaderflag);
 			checkParameter(parentnum, counter, leaderflag);
 		} else {
-			// treeの親ノードに接続する人に接続する人を教える
 			outputStream(os, myAddress, "0",
 					String.valueOf(counter), leaderflag);
 		}
@@ -233,7 +231,6 @@
 			Socket echoSocket;
 			System.out.println(newchild + "connect");
 			// echoSocket = new Socket(newchild, 10001 + (i + 1));//
-			// i+1は実験中に同じマシーンを使っていたのでportを変えて対応、本番時には取り除く予定。
 			echoSocket = new Socket(newchild, 10001);
 			DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream());
 			os.writeBytes(newparent + "\n");
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java	Tue Aug 21 14:24:38 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/GetBroadCastProxy.java	Wed Aug 22 20:05:26 2012 +0900
@@ -6,6 +6,7 @@
 import java.net.InetAddress;
 import java.net.MulticastSocket;
 import java.net.SocketAddress;
+import java.net.UnknownHostException;
 
 //import TextBoxProxy;
 
@@ -21,10 +22,10 @@
 	private BroadCastProxy bCast;
 	private String address;
 
-	public GetBroadCastProxy(VncProxyService _vps){
+	public GetBroadCastProxy(VncProxyService _vps,String desktopName,String host){
 		vps = _vps;
-		bCast = new BroadCastProxy(vps.rfb.acceptPort+":"+vps.host+":"
-				+vps.rfb.desktopName+":"+vps.acc.getMyAddress()+":");
+		bCast = new BroadCastProxy(vps.rfb.acceptPort+":"+host+":"
+				+desktopName+":"+getMyAddress()+":");
 	}
 	
 	private synchronized void getData() {
@@ -94,5 +95,16 @@
 	public boolean isStopFlag() {
 		return stopFlag;
 	}
+	
+	String getMyAddress () {
+		InetAddress addr = null;
+		try {
+			addr = InetAddress.getLocalHost();
+		} catch (UnknownHostException e) {
+			e.printStackTrace();
+		}
+		return new String(addr.getHostAddress());
+	}
+
 
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Tue Aug 21 14:24:38 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Aug 22 20:05:26 2012 +0900
@@ -5,6 +5,7 @@
 import java.util.logging.Logger;
 
 
+
 import com.glavsoft.exceptions.AuthenticationFailedException;
 import com.glavsoft.exceptions.FatalException;
 import com.glavsoft.exceptions.TransportException;
@@ -21,7 +22,6 @@
 import com.glavsoft.viewer.cli.Parser;
 import com.glavsoft.viewer.swing.ClipboardControllerImpl;
 import com.glavsoft.viewer.swing.ParametersHandler;
-import com.glavsoft.viewer.swing.Surface;
 import com.glavsoft.viewer.swing.UiSettings;
 import com.glavsoft.viewer.swing.ParametersHandler.ConnectionParams;
 
@@ -34,6 +34,7 @@
 	private static final long serialVersionUID = 1L;
 
 	public MyRfbProtoProxy rfb;
+	// public AcceptClient acc;
 	public VncProxyService(Parser parser) {
 		this();
 		try {
@@ -52,7 +53,6 @@
 		connectionParams = new ParametersHandler.ConnectionParams();
 		settings = ProtocolSettings.getDefaultSettings();
 		uiSettings = super.uiSettings;
-
 	}
 	
 	boolean isClient = false;
@@ -63,7 +63,12 @@
 	private ConnectionParams connectionParams;
 	private final ProtocolSettings settings;
 	private final UiSettings uiSettings;
-	private String[] arguments;
+	private AcceptClient aClient;
+	private Thread bCast;
+	private Thread accThread;
+	private Thread rfbThread;
+	private AcceptThread acceptThread;
+	private GetBroadCastProxy getCast;
 	
 	
 	public static void main(String[] argv) {
@@ -91,10 +96,17 @@
 		//SwingUtilities.invokeLater(myClient);
 		Thread th = new Thread(vps);
 		th.start();
+		try {
+			th.join();
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+		vps.createConnection();
+		vps.start_threads();
+
 	}
 	
 	private void setArguments(String[] mainArgs) {
-		arguments = mainArgs;		
 	}
 
 	@Override
@@ -107,7 +119,7 @@
 		}
 		tryAgain = true;
 		while (tryAgain) {
-		  connectionParams.hostName = arguments[0];
+		//  connectionParams.hostName = arguments[0];
 		//	workingSocket = connectionManager.connectToTreeHost(connectionParams, settings);
 			workingSocket = connectionManager.connectToHost(connectionParams, settings);
 			if (null == workingSocket) {
@@ -120,26 +132,21 @@
 				workingSocket.setTcpNoDelay(true); // disable Nagle algorithm
 				Reader reader = new Reader(workingSocket.getInputStream());
 				Writer writer = new Writer(workingSocket.getOutputStream());
-				
 				workingProtocol = new Protocol(reader, writer,
 						new PasswordChooser(passwordFromParams, connectionParams, containerFrame, this),
 						settings);
-
+				aClient = new AcceptClient(connectionParams.hostName);
+				Thread thread = new Thread(new CreateThread(aClient));
+				thread.start();
 				workingProtocol.handshake();
+				
 				// input into change parents
                 ClipboardControllerImpl clipboardController =
 		                new ClipboardControllerImpl(workingProtocol, settings.getRemoteCharsetName());
 				clipboardController.setEnabled(settings.isAllowClipboardTransfer());
 				settings.addListener(clipboardController);
+				
 
-				surface = new Surface(workingProtocol, this, uiSettings.getScaleFactor());
-				settings.addListener(this);
-				uiSettings.addListener(surface);
-				containerFrame = createContainer();
-				connectionManager.setContainerFrame(containerFrame);
-				updateFrameTitle();
-
-				workingProtocol.startNormalHandling(this, surface, clipboardController);
 				tryAgain = false;
 			} catch (UnsupportedProtocolVersionException e) {
 				connectionManager.showReconnectDialog("Unsupported Protocol Version", e.getMessage());
@@ -162,7 +169,24 @@
 				logger.severe(e.getMessage());
 			}
 		}
-
+	}
+	
+	public void createConnection() {
+		rfb.selectPort(5999);
+		rfbThread = new Thread(this);
+		acceptThread = new AcceptThread(rfb, 5999);
+		accThread = new Thread(acceptThread);
+		getCast = new GetBroadCastProxy(this,
+				workingProtocol.getRemoteDesktopName(),
+				this.connectionParams.hostName);
+		bCast = new Thread(getCast);		
+	}
+	
+	public void start_threads() {
+		//rfbThread.start();
+		accThread.start();
+		bCast.start();
+		//rfb.requestThreadStart();
 	}