view src/main/java/jp/ac/u_ryukyu/treevnc/client/WaitReply.java @ 44:d4663dfd91ae

add reconnection process when the connection fails.
author one
date Sun, 18 Nov 2012 18:47:14 +0900
parents 6687aa9dd55e
children 20326a4b9d88
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc.client;

import java.io.IOException;
import java.io.OutputStream;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * this Class get top(Proxy) Instruction. 
 * Type of Instruction is ReConnection and SocketClose.
 */
public class WaitReply extends Thread {
	private boolean passflag;
	private EchoClient echo;
	
	public WaitReply(String treenum, EchoClient echo) {
		this.echo = echo;
	}
	
	public boolean checkPath() {
		return passflag;
	}
	
	public void run() {
		Socket clientSocket = null;
		ServerSocket echoServer = null;
		while (true) {
			try {
				echoServer = new ServerSocket(10001);
				clientSocket = echoServer.accept();
				if (clientSocket != null) {
					echo.client.setTeminationType(true);
					echo.client.stopTask();
					echo.client.close();
					passflag = true;
					System.out.println("------waitreply");
					echo.client.setSocket(echo.createSocketForClient(clientSocket));
					// hult();
					// client.init();
					System.out.println("------before run()");
					echo.client.run();
					echoServer.close();
				}
			} catch (BindException e) {
				break;
			} catch (IOException e) {
				System.out.println("Error in WaitReply L47");
				System.out.println(e);
			} 
		}
	}
	
	private void hult() throws IOException {
		Socket socket = new Socket("localhsot",	echo.client.getPort());
		OutputStream stream = socket.getOutputStream();
		stream.write("halt".getBytes());
		stream.flush();
	}
}