view src/main/java/jp/ac/u_ryukyu/treevnc/server/ChangeHost.java @ 38:c2f0b6907448

add doc directory
author one
date Thu, 27 Sep 2012 19:32:25 +0900
parents 1454d6fe96c1
children
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc.server;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.LinkedList;

import jp.ac.u_ryukyu.treevnc.MyRfbProto;

import com.glavsoft.rfb.protocol.ProtocolSettings;
import com.glavsoft.viewer.ConnectionManager;
import com.glavsoft.viewer.Viewer;
import com.glavsoft.viewer.swing.ParametersHandler;

public class ChangeHost extends ConnectionManager implements Runnable {

	private VncProxyService vps;
	private VncProxyService prevVps;
	private LinkedList<String> clientList;
	private int port;
	
	public ChangeHost(VncProxyService _vps, boolean isApplet,
			VncProxyService _prevVps) {
		super(_vps, isApplet);
		vps = _vps;
		prevVps = _prevVps;
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String str;

	@Override
	public void run() {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(
					System.in));
			str = br.readLine();
			vps.changeVNCServer();
			vps.setConnectionManager(this);
			Thread thread = new Thread(vps);
			thread.start();
			Thread.sleep(1000);
			vps.createConnectionAndStart();
			prevVps.socketClose();
			vps.aClient.setList(prevVps.aClient.getList());
//			clientList = prevVps.aClient.getList();
//			createSocketAndSend(clientList,String.valueOf(port));
			System.out.println(str);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

	}

	String getHost() {
		return str;
	}

	@Override
	public Socket connectToHost(
			final ParametersHandler.ConnectionParams connectionParams,
			ProtocolSettings settings, MyRfbProto rfb) {
		Socket socket = null;
		connectionParams.hostName = str;
		connectionParams.portNumber = 5900;
		Viewer.logger.info("Connecting to host " + connectionParams.hostName
				+ ":" + connectionParams.portNumber);
		try {
			socket = new Socket(connectionParams.hostName,
					connectionParams.portNumber);
		} catch (UnknownHostException e) {
			Viewer.logger.severe("Unknown host: " + connectionParams.hostName);
			showConnectionErrorDialog("Unknown host: '"
					+ connectionParams.hostName + "'");
		} catch (IOException e) {
			Viewer.logger.severe("Couldn't connect to: "
					+ connectionParams.hostName + ":"
					+ connectionParams.portNumber + ": " + e.getMessage());
			showConnectionErrorDialog("Couldn't connect to: '"
					+ connectionParams.hostName + "'\n" + e.getMessage());
		}
		return socket;
	}
	
	private void createSocketAndSend(LinkedList<String> clientList,String port) throws UnknownHostException, IOException {
		int i = 0;
		for(String client : clientList) {
			if(i!=0) {
				Socket echoSocket;
				echoSocket = new Socket(client, 10001);
				DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream());
				os.writeBytes("reconnection\n");
				os.writeBytes(port+"\n");
				os.close();
			}
			i++;
		}
	}
}