package ti;

import java.awt.EventQueue;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

public class SocketServer extends Thread {
	private boolean running = false;
	private boolean OutServer = false;
	private ServerSocket server;
	private static int ServerPort = 1234;// �n�ʱ���port
	public static String test;
	public static String test2;
	public static String Client_ip = null;

	Thread serverThread;

	public SocketServer() {
		try {

			server = new ServerSocket(ServerPort);

		} catch (java.io.IOException e) {
			System.out.println("Socket�Ұʦ����D !");
			System.out.println("IOException :" + e.toString());
		}
	}

	public void stop_thread() {

		OutServer = false;

	}

	public void run() {
		Socket socket;
		running = false;
		java.io.BufferedInputStream in;

		System.out.println("���A���w�Ұ� !");
		while (!OutServer) {
			System.out.println(ServerPort);
			socket = null;
			try {
				synchronized (server) {

					socket = server.accept();
				}
				try {
					socket.setTcpNoDelay(true);
					socket.setReceiveBufferSize(23);
					socket.setSendBufferSize(16);
					socket.setKeepAlive(true);
					socket.setPerformancePreferences(1, 2, 0);
				} catch (SocketException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				// TimeOut�ɶ�
				socket.setSoTimeout(10000);
				Client_ip = null;
				Client_ip = socket.getInetAddress().getHostAddress();// ����o�e��ip
                //��Ʀ�y�����r��
				System.out.println("���o�s�u : InetAddress = " + socket.getInetAddress().getHostAddress());
				in = new java.io.BufferedInputStream(socket.getInputStream());
				byte[] b = new byte[256];
				String data = "";
				int length;
				while ((length = in.read(b)) > 0)// <=0���ܴN�O�����F
				{
					data += new String(b, 0, length);

				}

				test = (data);

				in.close();
				in = null;
				socket.close();

			} catch (java.io.IOException e) {
				System.out.println("Socket�s�u�����D !");
				System.out.println("IOException :" + e.toString());

			}

		}

	}

	public String getstring() {
		return test;
	}

	public String getstring2() {
		return test2;
	}

	public boolean isRunning() {
		return running;
	}
}