net.gobbz.tictactoe.server
Class TicTacToeServer

java.lang.Object
  extended by net.gobbz.tictactoe.TicTacToe
      extended by net.gobbz.tictactoe.server.TicTacToeServer

public class TicTacToeServer
extends TicTacToe

Realisiert den TicTacToeServer. Dabei wird davon ausgegangen, dass der TicTacToeClient den ersten Zug im Spielfeld macht, der Server also auf den Zug des Gegners wartet (getGegnerZug) und dann seinen Zug an den Client zurück schickt (setMeinZug).
Die Methode getGegnerZug wartet auf den Zug des Clients und legt dabei einen ClientSocket an, der beim Beenden der Methode nicht zerstört wird sondern erhalten bleibt.
Die Methode setMeinZug nimmt den bereits vorhandenen ClientSocket her und schickt über diesen den Zug des Servers an den Client zurück. Nachdem dies geschehen ist, wird der ClientSocket gelöscht


Field Summary
private  java.net.Socket clientSocket
          Clientsocket über welchen das Empfangen eines Zuges und das Senden des nächsten Zuges abgewickelt wird.
private static int FELDGROESSE
          Die vorgegebene Feldgröße des Spielfeldes
private static int PORT
          Port auf welchem der Server läuft
private  java.net.ServerSocket server
          Über dieses Objekt werden alle Clientabfragen abgearbeitet.
 
Fields inherited from class net.gobbz.tictactoe.TicTacToe
SPIELER1, SPIELER2
 
Constructor Summary
TicTacToeServer(int feldgroesse, int port)
          Parameterbehafteter Konstruktor, der das Spielfeld anlegt und den ServerSocket erstellt
 
Method Summary
 void close()
          Schließt den internen ServerSocket und ClientSocket
 int getGegnerZug()
          Wartet dass der Client die Verbindung mit dem Server aufnimmt und einen Zug sendet.
static void main(java.lang.String[] args)
          Legt zuerst einen ServerSocket an, gibt das Spielfeld aus und wartet auf den Zug des Clients.
private static int readInt(java.lang.String text)
           
 int setMeinZug(int zug)
          Es wird über den bereits vorhandenen ClientSocket der Zug des Servers an den Client geschickt.
 
Methods inherited from class net.gobbz.tictactoe.TicTacToe
getEinerKannGewinnen, getFeldgroesse, getGewonnen, getSpielfeld, setZugSpieler1, setZugSpieler2, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FELDGROESSE

private static final int FELDGROESSE
Die vorgegebene Feldgröße des Spielfeldes

See Also:
Constant Field Values

PORT

private static final int PORT
Port auf welchem der Server läuft

See Also:
Constant Field Values

server

private java.net.ServerSocket server
Über dieses Objekt werden alle Clientabfragen abgearbeitet. Dieses Objekt stellt den ServerSocket dar


clientSocket

private java.net.Socket clientSocket
Clientsocket über welchen das Empfangen eines Zuges und das Senden des nächsten Zuges abgewickelt wird. Der Socket stirbt, wenn das Empfangen und Senden abgewickelt wurde. Zuerst muss empfangen, dann gesendet werden

Constructor Detail

TicTacToeServer

public TicTacToeServer(int feldgroesse,
                       int port)
                throws java.io.IOException
Parameterbehafteter Konstruktor, der das Spielfeld anlegt und den ServerSocket erstellt

Parameters:
feldgroesse - des Spielfeldes
port - auf dem der Server läuft
Throws:
java.io.IOException - wenn ServerSocket nicht erstellt werden kann
Method Detail

main

public static void main(java.lang.String[] args)
Legt zuerst einen ServerSocket an, gibt das Spielfeld aus und wartet auf den Zug des Clients. Nachdem dieser empfangen wurde, wird der Zug des Servers gesetzt und an den Client zurück geschickt. Dies wird solange gemacht, bis einer der Spieler gewonnen hat, oder erkannt wurde, dass niemand mehr das Spiel gewinnen kann. In diesen Fällen wird das Programm beendet

Parameters:
args -

close

public void close()
           throws java.io.IOException
Schließt den internen ServerSocket und ClientSocket

Throws:
java.io.IOException

readInt

private static int readInt(java.lang.String text)

getGegnerZug

public int getGegnerZug()
                 throws java.io.IOException
Wartet dass der Client die Verbindung mit dem Server aufnimmt und einen Zug sendet. Wenn der Zug gesendet wurde, wird der ClientSocket nicht geschlossen, denn der Server analysiert den Zug, trägt ihn ins Spielfeld ein und schickt seinen Zug über denselben ClientSocket zurück zum Client

Returns:
0 falls erfolgreich empfangen oder Zug 0 geschickt
-1 falls der empfangene Zug außerhalb des Spielfeldes liegt
-2 falls der empfangene Zug bereits gesetzt wurde
-3 falls Clientsocket bereits existiert
Throws:
java.io.IOException - falls beim Erstellen des Clientsockets ein Fehler aufgetreten ist

setMeinZug

public int setMeinZug(int zug)
               throws java.io.IOException
Es wird über den bereits vorhandenen ClientSocket der Zug des Servers an den Client geschickt. Dabei muss der ClientSocket existieren. Nach dem Schicken wird der ClientSocket geschlossen

Parameters:
zug - der zu schickende Zug
Returns:
0 falls Zug erfolgreich gesetzt werden konnte
-1 falls der Zug außerhalb des Spielfeldes liegt
-2 falls der Zug bereits gesetzt wurde
-3 falls kein ClientSocket vorhanden ist
Throws:
java.io.IOException - falls beim Senden ein Fehler aufgetreten ist