import java.io.*;
import java.net.*;

class ServerConnection {
  Variablen var;
  Socket socket;
  PrintWriter out;
  BufferedReader in; 
  int portnum = 0;

  public ServerConnection(Variablen v) {
    var = v;
  }

  public void connect() throws IOException {
    portnum = Integer.parseInt(var.getPort());    
    try {
      socket = new Socket(var.getServer(),portnum);
      out = new PrintWriter(socket.getOutputStream(),true);
      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    } 
    catch (UnknownHostException e) {
      System.err.println("Kenne keinen Server <"+var.getServer()+">");
      System.exit(1);
    } 
    catch (IOException e) {
      System.err.println("Konnte kein I/O-Verbindung zu "+var.getServer()+" aufbauen!");
      System.exit(1);
    }
    System.out.println("Serv sets : Baue Verbindung mit "+var.getServer()+" auf Port "+portnum+" auf!");
    var.setStatus("verbunden");
  }

  public void send(String data) {
    out.println(data);
    System.out.println("Serv sets : "+data);
  }

  public String receive() throws IOException {
    String data = null;
    try { data = in.readLine(); }
    catch (IOException e) {
      System.err.println("Konnte kein I/O-Verbindung zu "+var.getServer()+" aufbauen!");
      System.exit(1);
    }
    return (data);
  }
 
  public void closeConnection() throws IOException {
    try {
      out.close();
      in.close();
      socket.close();
    }
    catch (UnknownHostException e) {
      System.err.println("Kenne keinen Server <"+var.getServer()+">");
      System.exit(1);
    } 
    catch (IOException e) {
      System.err.println("Konnte kein I/O-Verbindung zu "+var.getServer()+" aufbauen!");
      System.exit(1);
    }
    System.out.println("Serv sets : Baue Verbindung ab!");
    var.setStatus("nicht verbunden");
    var.setBefehl("Wählen Sie einen Befehl!");
    var.setParameter("");
  }
}


