view src/main/java/jp/ac/u_ryukyu/treevnc/client/GetDataClient.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
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc.client;

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


public class GetDataClient implements Runnable {
	private ServerSocket server = null;
	private BufferedReader is;
	private int port = 8182;
	private boolean stopFlag;
	private TextBoxClient text = new TextBoxClient();
	private String proxyAddr;
	
	public String textAddress() {
		return text.getAddress();
	}
	
	public String  textPort() {
		return text.getPort();
	}
	
	void socketClose() {
		try {
			text.unVisible();
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public void run() {
	    try {
	        do {
	            try {
	                server = new ServerSocket(port);
	            } catch (BindException e){
	                port ++;
	            }
	        } while (server == null);
	        while(!stopFlag) {
	            Socket socket = server.accept();  
				is = new BufferedReader(new InputStreamReader(
						socket.getInputStream()));
				proxyAddr = is.readLine();
				// proxyAddr format
				// 5999:localhost:localhost:133.13.59.210:
				// port:hostnae:hostname:ip address:
				// GetBroadCastProxy create this string on VNC root
				InetAddress adr = socket.getInetAddress();
				String proxyAddr1 = adr.getHostName();
				if (proxyAddr1 != null) {
				    int portIndex = proxyAddr.indexOf(":");
                    int restIndex = proxyAddr.indexOf(":", portIndex+1);
				    if (portIndex>0) {
	                    proxyAddr = proxyAddr.substring(0, portIndex)+":"+proxyAddr1 + ":" + proxyAddr.substring(restIndex+1);
				    }
				}
				if(proxyAddr!=null)
					text.checkBox(proxyAddr);
				text.setButton();
				text.visible();
			}
			System.out.println("stop");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void setStopFlag(boolean stopFlag) {
		this.stopFlag = stopFlag;
		
	}
	
	public void interrupt() {
		Thread.currentThread().interrupt();
	}

	public boolean isStopFlag() {
		return stopFlag;
	}
	
	public void ipRegister() {
		text.ipRegister();
	}

	public String getProxyAddr() {
		return proxyAddr;
	}
}