/* klijent -- Klijent.java
 *
 * Klasa koja igra ulogu klijenta. Kao argument komandne linije uzima path do datoteke
 * na serveru. Salje taj path serveru, a ovaj onda vraca datoteku ukoliko ona postoji.
 * Ono sto server vrati ispisuje se na standardni izlaz.
 *
 */

package klijent;

import java.net.*;
import java.io.*;

public class Klijent {
    public static void main(String[] args) {
	if (args.length!=3) {
	    System.out.println("Upotreba: java klijent.Klijent <host> <port> <datoteka>%n%n"
		    +"  <host> je ime ili IP adresa servera%n"
		    +"  <port> je port na kojem server slusa%n"
		    +"  <datoteka> je trazena datoteka");
	    System.exit(0);
	}

	String host = args[0];
	int port = Integer.parseInt(args[1]);
	String path = args[2];

	Socket server = null;
	BufferedReader inServer = null;
	PrintWriter outServer = null;

	try {
	    server = new Socket(host,port);

	    inServer = new BufferedReader(new InputStreamReader(server.getInputStream()));
	    outServer = new PrintWriter(server.getOutputStream(),true /* autoflush */);

	    // Saljemo serveru path
	    outServer.println(path);

	    String linija = null;

	    // Sve sto primimo ispisujemo na ekran
	    while ((linija=inServer.readLine())!=null) {
		System.out.println(linija);
	    }
	}
	catch (Exception e) {
	    System.err.println("Komunikacijska greska: "+e.getMessage());
	}
	finally {
	    if (inServer!=null) {
		try { inServer.close(); }
		catch (IOException e) {}
	    }
	    if (outServer!=null) {
		outServer.close();
	    }
	    if (server!=null) {
		try { server.close(); }
		catch (IOException e) {}
	    }
	}
    }
}

