//TCPServer.java

import java.io.*;
import java.net.*;
import krb5.lib.*;

class TCPServer extends Thread {
	TCPClient client;

	public TCPServer(Socket newSocket) throws IOException {
		client = new TCPClient(newSocket);
	}

	public static void main(String[] args) throws IOException {
		int port = 7777;
		ServerSocket server = new ServerSocket(port);
		try {
			do {
				TCPServer client = new TCPServer(server.accept());
				client.start();
			} while(true);
		} catch (IOException e) {
			e.printStackTrace();
		}
		finally {
			try {
				server.close();
			}
			catch (IOException e) {
			}
		}
	}

	public void run() {
		int i = 0;
		try {
			do {
				String reply = "reply" + new Integer(++i).toString();
				byte[] in = client.receive();
				System.out.println(new String(in, 0));
				byte[] out = new byte[reply.length()];
				reply.getBytes(0, reply.length(), out, 0);
				System.out.println(new String(out, 0));
				client.send(out);
			} while(true);
		} catch (IOException e) {
		}
		finally {
			try {
				client.close();
			}
			catch (IOException e) {
			}
		}
	}

}
