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

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

package jp.ac.u_ryukyu.treevnc.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;

public class CreateThread implements Runnable {
	ServerSocket echoServer;
	AcceptClient acceptClient;
	private int port;
	private boolean stopFlag;
	
	public CreateThread(AcceptClient _acc) {
		acceptClient = _acc;
		port = 9999;
	}

	
	public CreateThread(int port,AcceptClient _acc) {
		acceptClient = _acc;
		this.port = port; 
	}
	

	void newEchoClient(final BufferedReader is,final PrintStream os) {
		Runnable echoSender = new Runnable() {
			public void run() {
		//		AcceptClient acceptClient = new AcceptClient();
				// acceptClient new
				acceptClient.transferParentAddrerss(is,os);
			}
		};
		new Thread(echoSender).start();
	}

	void selectPort(int p) {
		int port = p;
		while (true) {
			try {
				initServSock(port);
				break;
			} catch (BindException e) {
				port++;
				continue;
			} catch (IOException e) {

			}
		}
		System.out.println("accept Echo port = " + port);
	}
	
	void initServSock(int port) throws IOException {
		echoServer = new ServerSocket(port);
		this.port = port;
	}
	
	public int getPort() {
		return port;
	}
	
	
	public void run() {
		selectPort(port);
		
		while (true) {
			try {
//				echoServer = new ServerSocket(9999);
				Socket clientSocket = echoServer.accept();
				if(stopFlag) break;
				BufferedReader is = new BufferedReader(new InputStreamReader(
						clientSocket.getInputStream()));
				PrintStream os = new PrintStream(clientSocket.getOutputStream());
				newEchoClient(is,os);
//				acceptClient.transferParentAddrerss(is, os);
			} catch (IOException e) {
				System.out.println(e);
			}
		}

	}
	public void setStopFlag(boolean flag){
		stopFlag = flag;
	}

}