package elte.java2_utikalauz5.net;
import java.io.*;
import java.net.*;
/**
Egy összeköttetés-alapú kliensalkalmazás.
Ez az alkalmazás felveszi az argumentumaiban megadott nevű számítógép
megadott sorszámú TCP portjával a kapcsolatot, és átküld oda egy
pozitív numerikus értéket, amit a szerver feldolgoz (a jelenlegi
szerver implementáció egyszerűen négyzetre emeli), és visszaküldi a
kapott eredményt.
A programparaméterek:
- Annak a gépnek a neve, ahol a szerver fut
- A szerver TCP portjának a sorszáma
- A szervernek átküldendő szám (ezt emeli négyzetre)
@link.forrásfájl {@docRoot}/../data/net/src CoClTeszt.java
@link.letöltés {@docRoot}/../data/net CoClTeszt.jar
@since Java Útikalauz programozóknak
*/
public class CoClTeszt {
  public static int ATKULDENDO_ERTEK ;
  public static void hasznalati_utasitas() {
      System.out.println("Használat: java CoClTeszt " +
                         "számítógépnév portsorszám szám");
      System.exit(-1);
  }
  public static void main(String[] args) {
    int server_port = 0;
    Socket s = null;
    String valasz = null;
    if (args.length != 3) hasznalati_utasitas();
    try { server_port = Integer.parseInt(args[1]); }
      catch (NumberFormatException e) { hasznalati_utasitas(); }
    try { ATKULDENDO_ERTEK = Integer.parseInt(args[2]); }
      catch (NumberFormatException e) { hasznalati_utasitas(); }
    try {
      /* Létrehozzuk a kommunikációs végpontunkat */
      s = new Socket(args[0], server_port);
      /* Ezzel tudunk a kommunikációs végpontunkról adatot olvasni: */
      BufferedReader input = new BufferedReader(
          new InputStreamReader(s.getInputStream()));
      /* Ezzel tudunk a kommunikációs végpontunkra adatot írni: */
      PrintWriter output = new PrintWriter(s.getOutputStream());
      output.println(Integer.toString(ATKULDENDO_ERTEK)); output.flush();
      // Elküldtük a szervernek
      valasz = input.readLine(); // Megvárjuk a szerver válaszát
      // Kiírjuk az eredményt
      System.out.println("A kívánt szám négyzete: " + valasz + ".");
    } catch (IOException e) {
      System.err.println(e); // Kiírtuk a hiba okát ...
    }
    finally { // Lezárjuk a kommunikációs végponthoz tartozó socketot ...
      try { s.close(); } catch (Exception ex) {
        System.err.println("Nem tudom lezárni a kapcsolatot!");
        }
    }
  }
}