18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut...

Post on 05-Apr-2015

106 views 1 download

Transcript of 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut...

18&3 GSG Version 1.1718&3 GSG Version 1.17

18&3 GSG V- 1.17GameServer + GUI

programmiert April-Juni 2003 von Knut Riechmann

als Teil des Software-Projektes „JAVA NEWS & MUSIC“ SS03

Fachhochschule Lippe und Höxter

18&3 GSG Version 1.1718&3 GSG Version 1.17

INHALT: 1 Die Idee

1.1 Ein erstes Layout vom 12.04.2003

1.2 Die Aufgabenverteilung

2 Die Server Applikation: 18&3-GSG

2.1 Charakterisierung

2.2 Die grafische Benutzeroberfläche 1

Die grafische Benutzeroberfläche 2

Die grafische Benutzeroberfläche 3

Die grafische Benutzeroberfläche 4

2.3 Aufbau der Klassen a) GameServerGUI.class

b) GameServer.class

c) GameVerbindung.class

d) GameUser.class

3 Die Umsetzung in JAVA

3.1 UML-Klassendiagramm: Vererbung

UML-Klassendiagramm: Assoziationen

3.2 a) Auszug aus der Klasse GameserverGUI

b) Auszug aus der Klasse GameServer

c) Auszug aus der Klasse GameVerbindung

Die Methode verbinden(int port)

d) Auszug aus der Klasse GameUser

e) Teile des Client-Moduls 1

Teile des Client-Moduls 2

4 Ein paar Anmerkungen...

18&3 GSG Version 1.1718&3 GSG Version 1.17

1) Die Idee

Geboren wurde die Idee ein netzwerkfähiges Spiel

zu programmieren bei der Erstellung eines ersten

Layouts für die JAVA NEWS & MUSIC Seite.

Als zu programmierendes Spiel wurde dann eine

Variante des bekannten Kartenspiels „17 und 4“

ausgewählt.

18&3 GSG Version 1.1718&3 GSG Version 1.17

1.1) Ein erstes Layout vom 12.04.2003

18&3 GSG Version 1.1718&3 GSG Version 1.17

1.2) Die Aufgabenverteilung

Aufgrund der Größe des Projektes haben wir

die Aufgaben in zwei Bereiche gegliedert:

Christian Kreienbrinck programmierte das eigentliche

Spiel als JAVA-Applet.

Der Netzwerkteil wurde von mir programmiert:

a) Client Modul, das in das Applet integriert werden konnte

b) Eigenständige JAVA-Server-Applikation

mit grafischer Benutzeroberfläche

18&3 GSG Version 1.1718&3 GSG Version 1.17

2) Die Server-Applikation: 18&3-GSG

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.1) Die Server-Applikation: 18&3 GSG

Charakterisierung:

- besteht aus vier Klassen

- grafische Benutzeroberfläche

- voll konfigurierbar

- drei Spiele gleichzeitig möglich

- absturzsicher durch Selbst-Restart

- indirekte Geschwindigkeitssteuerung

- automatische Spielernamen-Bestimmung

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 1

Aktuelle Konfiguration

LOG Infos

Status-Zeile

Menü-Leiste

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 2

Es gibt die Möglichkeit sämtliche

Servermeldungen in einer LOG-Datei zu speichern. Das Dateiauswahlfenster wurde mit

der SWING-Komponente JFileChooser realisiert.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 3

Sehr viele Parameter der Server

lassen sich konfigurieren.

Mit TextField und JButton konnte

das realisiert werden.

Falsche Eingaben werden erkannt.

Konfigurationsmodus

18&3 GSG Version 1.1718&3 GSG Version 1.17

Einfache Info- und Hilfefunktionen wurden mit eigenen JFrame-Objekten realisiert.

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 4

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

a) class GameServerGUI

- stellt die grafische Benutzeroberfläche bereit

- ist Erbe der SWING-Klasse JFrame

- Realisierung mit SWING-Komponenten

- Event-Handling mit Interface ActionListener

- läuft als eigenständiger Thread

- ruft eine Instanz der Klasse GameServer auf

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

b) class GameServer

- verwaltet den Start / das Sperren von Servern

- ist Erbe der Klasse Thread

- läuft als eigenständiger Thread

- ruft Instanzen der Klasse GameVerbindung auf

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

c) class GameVerbindung

- stellt jeweils einen Server dar

- ist Erbe der Klasse Thread

- läuft als eigenständiger Thread

- arbeitet mit Inputstream und Outputstream

- ruft Methoden der Klasse GameUser auf

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

d) class GameUser

- kann anhand von IP-Adressen aus Dateinamen

die Spielernamen herausfiltern

- stellt einen Dienst für die Klasse GameVerbindung

bereit

18&3 GSG Version 1.1718&3 GSG Version 1.17

3) Die Umsetzung in JAVA

Im Folgenden soll auf die Umsetzung der Programmierung

in JAVA eingegangen werden. Da der gesamte Code der

4 Klassen aus genau 1036 Zeilen besteht, soll hier aus Zeitgründen

nur auf elementare Stellen eingegangen werden.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.1) Die Umsetzung in JAVA

UML-Klassendiagramm 1: Vererbung

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.1) Die Umsetzung in JAVA

UML-Klassendiagramm 2: Assoziationen

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

1. Übergabe der Konfigurationsparameter

2. Neuer THREAD: GameServer

a) Auszug aus der Klasse GameServerGUI

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

b) Auszug aus der Klasse GameServer

1. Überwachung, ob neuer Server gestartet werden darf

2. Start eines neuen Threads: GameVerbindung

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

c) Auszug aus der Klasse GameVerbindung

Versucht neue Verbindung

aufzubauen

Liegen Daten an, werden diese

weitergeleitet.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

c) Auszug aus der Klasse GameVerbindung

Die Methode:

verbinden(int port)

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

d) Auszug aus der Klasse GameUser

- Filterfunktion

- Dienstleistung

18&3 GSG Version 1.1718&3 GSG Version 1.17

e) Teile des Client-Moduls 1

3.2) Die Umsetzung in JAVA

import java.io.*;import java.net.*; ----------------------------------------------------------------------------------------Socket Verbindung;DataInputStream Eingangsstrom;PrintStream Ausgangsstrom;Thread lesethread; ----------------------------------------------------------------------------------------Verbindung = new Socket("192.168.0.1",6666);Eingangsstrom = new DataInputStream(Verbindung.getInputStream());Ausgangsstrom = new PrintStream(Verbindung.getOutputStream()); ----------------------------------------------------------------------------------------lesethread = new Thread(this);lesethread.start(); ----------------------------------------------------------------------------------------

- Java.io und java.net

- Socket + Ströme

- Eigener Thread

- Verbindung aufbauen

- Thread starten

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA e) Teile des Client-Moduls 2// In diesem Thread wird dauernd auf Daten gewartet public void run() { String Eingangsdaten; try { while (true) { Eingangsdaten = Eingangsstrom.readLine(); if(Eingangsdaten!=null) { Empfang = new Button(); Empfang.setLabel("Eingegangene Daten: "+Eingangsdaten); Fenster.add(Empfang); Fenster.show(); -------------------------------------------------------------------------------------------------------------------

public void actionPerformed (ActionEvent Ereignis) { ... if (Ereignis.getSource() == Abschicken) { Nachricht = Eingabefenster.getText(); Ausgangsstrom.println(Nachricht); } ... } }

- run()-Methode

- readLine()-Methode

- Label + Button

- Interface ActionListener

- ActionEvent-Objekt

- println()-Methode

18&3 GSG Version 1.1718&3 GSG Version 1.17

4) Ein paar Anmerkungen ...

Hürden, die zu überwinden waren:

- Sicherheitsaspekte bei JAVA-Applets Testphase ohne Java News & Music - Server

- Servergeschwindigkeit Performance contra Benutzerfreundlichkeit

- Erfahrungen mit Excelsior JET

- Synchronisation Client/Server Informationsaustausch

18&3 GSG Version 1.1718&3 GSG Version 1.17

ENDE© 2003 by Knut Riechmann, Lemgo