import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {
	
	public static void main(String[] args) {
		try {
			
		int portNumber = 5001;
		
		System.out.println("Starting Java Socket Server ...");
		
			ServerSocket aServerSocket = new ServerSocket(portNumber);
			System.out.println("Listening at port " + portNumber + "...");
			
			while(true) {
				Socket sock = aServerSocket.accept();
				InetAddress ClientHost = sock.getLocalAddress();
				int clientPort = sock.getPort();
				System.out.println("A client connected. host : " +
									ClientHost +", port : " + clientPort);
				ObjectInputStream instream = new ObjectInputStream(sock.getInputStream());
				Object obj;
				try {
					obj = instream.readObject();
					System.out.println("Input : " + obj);
					
				ObjectOutputStream outstream = new ObjectOutputStream(sock.getOutputStream());
				outstream.writeObject(obj +" form Server");
				outstream.flush();
				sock.close();
				} catch (ClassNotFoundException e) {
					e.printStackTrace();
				}
			}
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

}
