/** *

* Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 *

*

* Klasse Connection *

*

* Objekte der Klasse Connection ermoeglichen eine Netzwerkverbindung zu einem * Server mittels TCP/IP-Protokoll. Nach Verbindungsaufbau koennen Zeichenketten * (Strings) zum Server gesendet und von diesem empfangen werden. Zur * Vereinfachung geschieht dies zeilenweise, d. h., beim Senden einer * Zeichenkette wird ein Zeilentrenner ergaenzt und beim Empfang wird dieser * entfernt. Es findet nur eine rudimentaere Fehlerbehandlung statt, so dass z.B. * der Zugriff auf unterbrochene oder bereits getrennte Verbindungen nicht zu * einem Programmabbruch fuehrt. Eine einmal getrennte Verbindung kann nicht * reaktiviert werden. *

* * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule * @version 30.08.2016 */ import java.net.*; import java.io.*; public class Connection { private Socket socket; private BufferedReader fromServer; private PrintWriter toServer; public Connection(String pServerIP, int pServerPort) { try { socket = new Socket(pServerIP, pServerPort); toServer = new PrintWriter(socket.getOutputStream(), true); fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (Exception e) { //Erstelle eine nicht-verbundene Instanz von Socket, wenn die avisierte //Verbindung nicht hergestellt werden kann socket = null; toServer = null; fromServer = null; } } public String receive() { if(fromServer != null) try { return fromServer.readLine(); } catch (IOException e) { } return(null); } public void send(String pMessage) { if(toServer != null) { toServer.println(pMessage); } } public void close() { if(socket != null && !socket.isClosed()) try { socket.close(); } catch (IOException e) { /* * Falls eine Verbindung geschlossen werden soll, deren Endpunkt nicht * mehr existiert bzw. seinerseits bereits geschlossen worden ist oder * die nicht korrekt instanziiert werden konnte (socket == null), geschieht * nichts. */ } } }