Andreas Geggus

Andreas Geggus




Klasse für den Aufbau und Unterhalt einer Verbindung zu einem Server

Download ServerVerbindung.java


/* Diese Klass Serververbindung ist ein erstes lauffähiges
 * Programmfragment zur Weiterverwendung
 * im IRC-Client im Kurs Programmieren für das Internet
*/

// benötigte Java-Erweiterungen
import java.io.*;
import java.net.*;

public class ServerVerbindung {

// Datenfeld der Klasse ServerVerbindung
  Socket chatSocket;  // Objekt für die Datenverbindung zum Server
  PrintWriter out;    // Objekt für Schreibeströme
  BufferedReader in;  // Objekt für Leseströme

// Konstruktor
  public ServerVerbindung()  {

// Zuerst mal allen Objekten Standardeinstellungen geben (Nullen)
    chatSocket = null;
    out = null;
    in = null;
  }


// Methoden der Klasse ServerVerbindung

  void verbindungHerstellen() throws IOException {
// Erste Methode, um zum gewünschten Server
// (hier szm.geist-soz... eine Verbindung herzustellen
// Diese Methode muss abgefangen sein, da IO und/oder Netzwerkfehler
// auftreten können

    try {
      chatSocket = new Socket("szm.geist-soz.uni-karlsruhe.de", 7);
      out = new PrintWriter(chatSocket.getOutputStream(), true);
      in = new BufferedReader(new InputStreamReader(chatSocket.getInputStream()));
    }
    catch (UnknownHostException e) {
//        Fehlermeldung bei unbekanntem host
      System.err.println("Don't know about host: szm.");
      System.exit(1);
    }
    catch (IOException e) {
//         Fehlermeldung 'keine IO-Verbindung'
       System.err.println("Couldn't get I/O for the connection to: szm.");
       System.exit(1);
    }
  }

  void datenSchreiben(String DatenInput) {
//         Methode um Daten an den Server zu schicken
    out.println(DatenInput);
  }

  String datenLesen() throws IOException {
//         Methode um Daten des Servers zu lesen
    return (in.readLine());
  }

  void verbindungKappen() throws IOException {
//        Methode, die bestehende Verbindungen Socket und IO-Ströme schließt
    out.close();
    in.close();
    chatSocket.close();
  }
}

Testklasse zum Betreiben eines Objekts der Klasse ServerVerbindung

Download TestVerbindung.java


/* Programm um die Klasse Serververbindung zu testen. */

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

class TestVerbindung {
  public static void main (String[] args) throws IOException {

// Neue Verbindung anmelden - Konstruktor der Klasse
// Serververbindung aufrufen
    ServerVerbindung verb = new ServerVerbindung();

// Verbindung herstellen
    verb.verbindungHerstellen();

// Ein bisschen Konsolenkosmetik
    System.out.println("Testprogramm für Klasse Serververbindung!");
    System.out.println("Beenden mit ^C");
    System.out.println("Bitte geben Sie einen Text ein!");
    System.out.println("-----------------------------------------");

// Reader für Konsoleneingabe initialieren und instantiieren
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

// Variable für Konsoleneingabe
    String userInput;

// Schleife für Konsoleneingabe
    while ((userInput = stdIn.readLine()) != null) {

// Daten der Konsoleneingabe werden an den Server geschickt
      verb.datenSchreiben(userInput);

// Daten des Servers werden auf den Bildschirm gebannt
      System.out.println("echo: " + verb.datenLesen());
    }

// Sitzung beenden und Verbindungen kappen
    verb.verbindungKappen();
  }
}