Import java.io.* ;
Import java.net.* ;
Public class KnockKnockClient
{
Public static void man(String[]
args) throws IOException
{
int x=0;
Socket kkSocket = null;
PrintWriter out = null;
BufferedReader in = null,
try
{
x
kkSocket = new Socket(“localhost”, 4444);
// Verbindung zu Server über Port 4444
out = new PrintWriter(kkSocket.getOutputStream(), true); //Schreiben
in
= new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); //Lesen
}
catch (UnknownHostException e) {
System.err.println(“Don’t’t
know about host: taranis.”); //kann den Namen nicht
auflösen
System.exit(1);
}
catch (IOException e) { //kann die IP nicht finden
System.err.println(“Couldn’t get I/O for the connection to: taranis”);
System.exit(1);
}
String fromServer;
String fromUser=”testfile”;
out.println(fromUser); //schickt die
Testfile an den Server
while ((fromServer = in.readLine()) != null) { //liest vom Server, wenn eine Antwort “Bye”
kommt wird die Aktion beendet
System.out.println(“Server: “ + fromServer);
if
(fromServer.equals(“Bye.”))
break;
if
(fromUser != null) { //was der Client
schickt
System.out.println(“Client:
“ + fromUser);
fromUser
= null;
}
}
out.close();
in.close();
kkSocket.close();
}
}
Import java.net.* ;
Import java.io.* ;
Public class KKMultiServer
{
public
static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;
Boolean
listening = true;
Nun wird der SeverSocket zum Hören auf Port 444 gesetzt
try {
serverSocket
= new ServerSocket (4444);
}
catch
(IOException e)
{
System.err.println(“Couldn’t’t
listen on port: 4444.”);
System.exit(-1);
}
Wird die Verbindung akzeptiert, (durch “true” immer) wird die Verarbeitung an den Thread übergeben
while (listening)
{
new
KKKMultiServerThread(serverSocket.accept()).start();
}
serverSocket.close();
}
}
Import java.net.* ;
Import java.io.* ;
Public class
KKMultiServerThread(Socket socket) {
Private
Socket socket = null;
Public
KKMultiServerThread(Socket socket) {
super(“KKMultiServerThread”);
this.socket
= socket;
}
public void run() {
try {
PrintWriter out = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String
inputline, outputline; // Stringvariable deklarieren
KnockKnockProtocol
kkp = new KnockKnockProtocol();
outputline = “Hallo!”;
out.println(outputline);
While ((inputline =
in.readLine()) != null) { //liest die Daten vom Client ein in die
Variable inputline
outputline
= leseData(inputLine);
Gibt
den String von leseData auf der Server-Konsole aus und schickt den String an
den Client zurück, bei einem „Bye“ wird das Programm beendet
System.out.println(outputLine);
out.println(outputLine);
if (outputLine.equals(“Bye”));
break;
}
out.close();
in.close();
socket.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
public static String leseData(String filename)
{
int c;
String satz = “”; //Leerer String
try {
Liest den String vom Client Schritt für Schritt in die Variable satz ein und gibt sie ,
wenn die Schleife fertig ist wieder an das Thread zurück
FileReader f = new
FileReader(filename);
while ((c = f.read()) != -1); // read gibt immer “int” zurück, deshalb ist c int
{
satz = satz +(char)c;
}
f.close();
}
catch (IOException e)
{
System.out.println(“Fehler
beim Lesen der Datei”);
}
return
satz;
}