view src/main/java/jp/ac/u_ryukyu/treevnc/CreateConnectionParam.java @ 81:f93d0286c2ab

root find multicast send port number now.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 30 Apr 2014 17:11:15 +0900
parents 2951dd85e9fc
children cc72fdbb7c72
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc;

import java.util.logging.Logger;

import com.glavsoft.viewer.ViewerImpl;

import jp.ac.u_ryukyu.treevnc.client.EchoClient;
import jp.ac.u_ryukyu.treevnc.client.GetDataClient;
import jp.ac.u_ryukyu.treevnc.client.GetHostClient;
import jp.ac.u_ryukyu.treevnc.server.GetBroadCastProxy;



public class CreateConnectionParam {
	private String hostName;
	private int portNumber;
	private MyRfbProto rfb;
	private final Logger logger;
	
	public CreateConnectionParam(MyRfbProto rfb) {
		this.rfb = rfb;
		logger = Logger.getLogger(getClass().getName());		
	}

	public void communicationToProxy() {
		GetHostClient bCast = new GetHostClient(GetBroadCastProxy.MULTICAST_FIND_TREEVNC_ROOT);
		bCast.getHost();
		GetDataClient getBcast = new GetDataClient();
		portNumber = 0;
		do {
		    try {
		        Thread runBcast = new Thread(getBcast);
		        runBcast.start();
		        hostName = getBcast.textAddress();
		        portNumber = Integer.parseInt(getBcast.textPort());
		    } catch (Exception e) {
		        logger.info("can't get parent address or port");
		    }
		    getBcast.interrupt();
		} while ( portNumber == 0);

	}

	public void createConnectionParam(ViewerImpl v) {
		EchoClient echo = new EchoClient(hostName, 9999); 
		rfb.setEcho(echo);
		rfb.setProxyAddr(hostName);
		echo.getParentName();
		v.setConnectionParam(echo.getParentsAddress(), portNumber);
		runAcceptThread();
	}


	private void runAcceptThread() {
		Thread accThread = new Thread(new AcceptThread(rfb, portNumber));
		accThread.start();
	}
	
	public void setHostName(String _hostName) {
		hostName = _hostName;
		portNumber = 5999;
	}

}