import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class NetServer {

	public static void main(String[] args) {
		if (args.length < 1) {
			System.out.println("usage: NetServer listenport");
			System.exit(-1);
		}
		int port = 0;
		try {
			port = Integer.parseInt(args[0]);
		} catch (NumberFormatException nfe) {
			System.out.println("usage: NetServer listenport");
			System.exit(-1);
		}
				
		try {
			
			ServerSocket s = new ServerSocket(port);
			while(true){
				Socket conn = s.accept();
				ClientThread t = new ClientThread(conn);
				t.start();
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 

		
	}
}

class ClientThread extends Thread{
	Socket client;
	
	ClientThread(Socket s){
		client =s;
	}	
	
	public void run(){
		try{
			//BufferedReader ois = new BufferedReader(new InputStreamReader(client.getInputStream()));
			ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
			Object s = ois.readObject();
			System.out.println("get from client "+s);
			ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
			oos.writeObject(" Server got msg "+s);
			
			ois.close();
			oos.close();
			client.close();	
		}catch (Exception e) {			
			e.printStackTrace();
		} 
	}
}