package G1.client_server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServer {

	ServerSocket servSocket;
	Socket socket;
	PrintWriter in;
	BufferedReader out;

	public EchoServer() {
		try {
            //ServerSocket je rasporedjivac konekcija, sluzi da prihvati klijenta i dodeli mu Socket
			servSocket=new ServerSocket(10001);
            //prihvatanje klijenta i dodeljivanje socketa za konekciju. accept je blokirajuca naredba
			socket = servSocket.accept();
			System.out.println("Klijent zakacen: "+socket);
            //duplex komunikacija: server pise na in, sto se preusmerava na klijentov out, i obrnuto, serverov out je ono sto klijent pise
			in = new PrintWriter(socket.getOutputStream(),true);
			out = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //ova verzija servera radi sa samo jednim klijentom, jer se samo jednom uradi accept
			while(true){
                //u beskonacnoj petlji ucitavamo klijentski request
				String reqString = out.readLine();
                //i odgovaramo
				in.println("Response: "+reqString);
			}
			} catch (IOException e) {
				try {
					servSocket.close();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		EchoServer server = new EchoServer();
	}
}
