www.pudn.com > talk-plugins.rar > ClientHandlerThread.java


/** 
 * ClientHandlerThread.java 
 */ 
package talkServer.business; 
 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.Socket; 
 
import org.eclipse.swt.widgets.Text; 
 
/** 
 * @author Xiang Zhou 
 * @date 2006-4-30 
 */ 
public class ClientHandlerThread extends Thread { 
//	Text text; 
	 
	Socket receive_sock; 
 
	// SET THE SOCKET FOR GETTING DATA 
	public ClientHandlerThread(Socket accepted_sock/*, Text text*/) { 
		this.receive_sock = accepted_sock; 
//		this.text = text; 
	} 
 
	public void destroy() { 
		super.destroy(); 
	} 
 
	public void run() { 
		super.run(); 
 
		// GET DATA FROM THE RECEIVED SOCKET AND SHOW ON GUI 
		String data_str = ""; 
		BufferedReader br_in = null; 
		try { 
			br_in = new BufferedReader(new InputStreamReader(receive_sock 
					.getInputStream())); 
			data_str = br_in.readLine(); 
		} catch (IOException e2) { 
			e2.printStackTrace(); 
		} 
//		text.append("\n" + data_str); 
		System.out.println(data_str); 
		 
		// CHECK THE TYPE OF DATA PACKAGE 
		// REQUEST PACKAGE: 
		// [0]::[IP]::[PASSWORD] -- LOG ON 
		// [1]::[IP] -- LOG OUT 
		String[] data_snippet = data_str.split("::"); 
 
		PrintWriter pw = null; 
		try { 
			pw = new PrintWriter(receive_sock.getOutputStream(), true); 
		} catch (IOException e3) { 
			// TODO Auto-generated catch block 
			e3.printStackTrace(); 
		} 
 
		if (data_snippet[0].equals("0")) { 
 
			// LOG ON 
			int answer_type = logOn(data_snippet); 
			 
			System.out.println(answer_type); 
 
			// SEND THE ANSWER TO THE CLIENT 
			pw.println(answer_type); 
 
		} else { 
 
			// LOG OUT 
			int answer_type = logOut(data_snippet[1]); 
 
			// SEND THE ANSWER TO THE CLIENT 
			pw.println(answer_type); 
		} 
 
	} 
 
	// RETURN ANSWER: 
	// 0 -- SUCCESS 
	// 1 -- IP NOT EXIST, SO NEED REGISTER 
	// 2 -- PASSWORD WRONG 
	// 3 -- ALREADY LOG ON 
	private int logOn(String[] data) { 
		if (!Maps.checkIP(data[1])) { 
			return 1; 
		} else if (Maps.checkState(data[1]) == 1) { 
			return 3; 
		} else if (Maps.checkPassword(data[1], data[2])) { 
			// UPDATE THE USER STATE 
			Maps.updateState(data[1], 1); 
			return 0; 
		} else { 
			return 2; 
		} 
	} 
 
	// RETURN ANSWER: 
	// 0 -- SUCCESS 
	// 1 -- IP NOT EXIST, SO NEED REGISTER 
	// 2 -- ALREADY LOG OUT 
	private int logOut(String ip) { 
		if (!Maps.checkIP(ip)) { 
			return 1; 
		} else if (Maps.checkState(ip) == 1) { 
			// UPDATE THE USER STATE 
			Maps.updateState(ip, 0); 
			return 0; 
		} else { 
			return 2; 
		} 
	} 
 
}