Kommunikation im Netzwerk über Java

Um im Netzwerk mit Java zu kommunizieren gibt es drei Klassen, die vom Ministerium bereitgestellt werden. Benutzt werden dabei die Klassen mit Vererbung. Dabei wird eine auf das Problem spezifische Klasse erstellt (z.b. EchoServer), die dann von der bereitgestellten Klasse Server erbt.

Server

Die Klasse Server ermöglicht das eröffnen eines Servers im Netzwerk. Dafür wird ein Port benötigt.

public EchoServer(int pServerPort) {
    super(pServerPort);
}

Dabei müssen die unten aufgelisteten process Methoden implementiert werden.

/**
    * Die Methode wird aufgerufen, wenn eine bestehende Verbindung zum Server geschlossen wird.
    * @param pClientIP IP-Nummer des Clients, der abgemeldet worden ist
    * @param pClientPort Port-Nummer des Clients, der abgemeldet worden ist
    */
public void processClosed(String pClientIP, int pClientPort) {
    send(pClientIP, pClientPort, "Die Verbindung wurde unterbrochen");
}

/**
    * Die Methode wird aufgerufen, wenn eine neu Verbindung zum Server aufgebaut wird.
    * @param pClientIP IP-Nummer des Clients, der neu angemeldet ist
    * @param pClientPort Port-Nummer des Clients, der neu angemeldet ist
    */
public void processNewConnection(String pClientIP, int pClientPort){
    send(pClientIP, pClientPort, "Du bist angenommen");
}

/**
    * Die Methode wird aufgerufen, wenn ein Client eine Nachricht an den Server schickt
    * @param pClientIP IP-Nummer des Clients, der die Nachricht geschickt hat
    * @param pClientPort Port-Nummer des Clients, der die Nachricht geschickt hat
    * @param pMessage Die empfangene Nachricht, die bearbeitet werden soll
    */
public void processMessage(String pClientIP, int pClientPort, String pMessage){
    send(pClientIP, pClientPort, "Return: "+pMessage);
}

Client

Der Client dient dazu, eine Verbindung mit dem Server aufzubauen. Dabei kann ein Server mehrere Verbindungen zu unterschiedlichen Clients aufbauen.

Client-Server-Diagramm

Auch hier erbt wieder die spezifische Klasse von der bereitgestellten Client Klasse. Deshalb muss auch der Konstruktor der Oberklasse aufgerufen werden.

public EchoClient(String pServerIP, int pServerPort) {
    super(pServerIP, pServerPort);
}

Als Methode muss hier die processMessage() Methode implementiert werden.

@Override
public void processMessage(String pMessage) {
    System.out.println(pMessage);
}

Die Methode wird dann aufgerufen, wenn der Client eine Nachricht vom Server empfängt.

Connection

Um Verbindungen über das TCP-Protokol zu ermöglichen wird die Klasse Connection verwendet.

Wie schon vorher erbt die entsprechende Klasse von der Klasse Connection. Es stehen dann die Methode send() und receive().

Um eine Anfrage an den Server zu senden wird die send() Methode benutzt. Um die Antwort des Servers als String zu erhalten, wird die receive() Methode verwendet.

Klassendiagramme