zeichenmaschine/src/test/java/schule/ngb/zm/util/abi/Connection.java

91 lines
2.6 KiB
Java
Executable File

package schule.ngb.zm.util.abi; /**
* <p>
* Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
* </p>
* <p>
* Klasse Connection
* </p>
* <p>
* 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.
* </p>
*
* @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.
*/
}
}
}