HINWEIS: Vergessen Sie bitte auf keinen Fall, Ihre Abgaben in das Abgabeverzeichnis des jeweiligen Beispieles zu stellen (siehe unten unter Abgaben).
Welche Gruppennummer Sie bzw Ihre Gruppe zugeordnet bekommen haben, erfahren Sie im CN Anmeldestand (+ Ergebnisse).
Da Sie beim Testen Ihrer Applikationen vielleicht verschiedene Kennungen (Adressen) für ihre eigenen Programme benötigen, stehen Ihnen sogenannte Gruppencodes zur Verfügung. Jede Übungsgruppe erhält eine Menge von 4 Gruppencodes zugeordnet, die nach der Regel
Gruppencodes <gc> = {x | x = Gruppennummer + k * 100 (für k = 0,1,2,3)}
gebildet werden. Gruppencodes müssen immer dreistellig sein und müssen daher eventuell mit führenden "0"-en versehen werden:
<gc1> ::= { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
<gc> ::= <gc1><gc1><gc1>
Der Laborübungsgruppe 4 stehen daher beispielsweise die Gruppencodes
<gc> = { 004, 104, 204, 304 }
zur Verfügung. Diese vier Codes können in den verschiedenen Beispielen verwendet werden und sind auf jeden Fall innerhalb der LVA eindeutig.
| Chatter | Ist ein Benutzer des UDP-Chat-Systems. |
| Nickname | Ist ein "Spitzname", unter dem ein Benutzer des UDP-Chat in diesem bekannt ist und unter dem er auch direkt angesprochen werden kann. |
| Nickname des Senders | Der Nickname, der den Sender der Nachricht eindeutig identifiziert. Es kann zu einem Zeitpunkt immer nur einen Benutzer mit einem bestimmten Nickname im UDP-Chat-System geben. |
| Nickname des Empfängers | Der Nickname, der den Empfänger der Nachricht eindeutig identifiziert. Als Empfänger-Nickname ist auch der String "*" (ein Sternchen) zulässig. Dies bedeutet: Empfänger sind alle Benutzer des UDP-Chat-Systems. |
| Message | Ist derjenige Text, den ein Chatter an andere Chatter und sich selbst sendet. Eine Message ist maximal 60 Zeichen lang, wenn sie vom Client kommt und wird vom Server mit den entsprechenden Informationen erweitert. |
Der Server kann Debugging-Meldungen auf die Console (System.out) schreiben.
Ob ein Nickname mehrfach vorkommt, muß von den Servern geprüft und verhindert werden. Der Button "Set Nickname" dient dazu, diesen Test auf Eindeutigkeit des Nicknames im gesamten Chat-System zu prüfen. Ein Nickname gilt nur dann als zugewiesen, wenn er im System eindeutig ist. Vorher können keine Messages gesendet werden. Messages, die an alle (Nickname "*") gesendet wurde, werden aber empfangen.
Wenn als Nickname für den Empfänger ein Stern ("*") verwendet wird, soll die Nachricht immer an alle Benutzer (Clients) gesendet werden. Wird als Empfangs-Nickname ein bestimmter Name angegeben, so soll diese Nachricht nur an diesen Nickname gesendet werden. Gibt es den Nickname im System nicht (mehr), geht die Meldung "ins Leere" (es wird kein Fehler gemeldet).
Die Clients sind die aktiven Parts bei der Client-Server
Kommunikation.
Jeder Client pollt seinen Server (in einstellbaren Intervallen) auf
neue
Nachrichten. Wird der "Send"-Button aktiviert, so sendet der Client
seine
Message sofort. Der Server sendet jede eintreffende Message sofort an
alle
anderen Server. Das System soll so implementiert werden, dass auch bei
einem sehr kurzen Polling-Intervall die Kommunikation der Clients und
Server einwandfrei funktioniert.
Der Server muß eine Liste der letzten empfangenen Messages halten (dieser Puffer kann eine fixe Größe haben), in der er die Messages für alle ihm bekannten Clients aufbewahrt, bis jeder ihm bekannte Client sich die Message abgeholt hat.
Ein Server streicht einen Client aus der Liste der ihm bekannten
Clients,
wenn sich der Client eine fixe Zeitspanne lang nicht gemeldet hat
(Server-Parameter:
Client-Timeout). Damit wird auch der Nickname dieses Clients wieder
"frei".
Ein Server kann mehrere Clients versorgen.
Di minimale Länge der Messages soll 60 Zeichen betragen. Wird
eine Message abgeschickt, so bleibt sie im Textfeld "Message" erhalten,
sodass sie sofort nochmals gesendet werden kann.
Jeder Server verwendet seinen Port sowohl zum Senden als auch zum Empfangen.
Der Server muß den Erhalt der email dem Client gegenüber bestätigen und die email dann abspeichern. Zum Abspeichern am Server wird eine lokale Datei verwendet (bitte im ASCII-Format - also als Klartext - abspeichern und ein möglichst einfaches implementierbares Format wählen).
Die email bleibt solange in der Datei, bis sie von einem Client explizit gelöscht wird. Der Server gibt diejenigen emails aus seiner Datei an einen Client weiter, die an diesen Client adressiert sind. Der Client muß sich also dem Server gegenüber identifizieren.
Der Client holt nur die Subjects und Senderadressen der emails beim Verbindungsaufbau vom Server ab. Die Texte der emails werden erst per Button "Lesen" geholt.
Der Client pollt den Server mittels des Buttons "Holen". Beim
Verbindungsaufbau
mit dem Server werden die Subjects und Senderadressen aller
eingetroffenen emails in den
Client
geladen.
Der Client muss nicht anzeigen, an wen sonst noch eine empfangene
email gesendet wurde.
Notenschlüssel
Die Noten der VL werden zu 60% aus dem schriftlichen Abschlusstest und
zu je 20% aus den beiden LU-Beispielen ermittelt. Ein erfolgreich
abgegebenes Beispiel bringt daher zB 10 Punkte für das Haus
Gryffindor - ups, ich meine natürlich für die VL. Punkte aus
der LU werden allen Gruppenmitgliedern angerechnet, die Punkte aus dem
Test werden für jeden getrennt gezählt.
| 2 Beispiele gelöst | 20 Punkte |
| 1 Beispiel gelöst | 10 Punkte |
| kein Beispiel gelöst |
0 Punkte |
| Ergebnis des schriftlichen Tests |
0-30 Punkte |
| Notenschlüssel
gesamte VL |
|
| 0-25 Punkte |
N5 |
| 26 - 31 |
G4 |
| 32 - 37 |
B3 |
| 38 - 43 |
U2 |
| 44 - 50 |
S1 |
Die Abgabe für jedes Beispiel besteht aus
Als syntaktische Form des Kommentierens in den Sourcen wird folgendes vorgeschlagen:
/*
Der Kommentar steht
hier und ist einen Tabstop eingerückt.
Folgezeilen sind
ebenfalls
einen Tabstop eingerückt angeordnet.
*/
Für die Dokumentation gelten die folgenden Regeln:
Jede abzugebende Datei erhält einen Kopf in der folgenden Form:
/*
LVA:
COMPUTER NETWORKS VL SS 2005
GRUPPE:
99
Manfred
MUSTER, E880, 9968040
Norbert
NORM, E880, 9932032
Tanja
TEST, E880, 9980486
BEISPIEL: UDP
DATEI:
xxx.java
ABGABE:
30.06.2005
*/
Jedes Programm / Programmsystem sollte in Klassen aufgegliedert werden, die jeweils günstigerweise nicht länger als eine Druckseite (ca. 60 Zeilen) sind.
Jede Klasse muß in ihrer Funktionalität kurz beschrieben werden (ca. 2 bis 10 Zeilen).
Alle Klassen- und Instanz-Variablen sind in ihrer Verwendung
ausreichend
zu beschreiben (je 2 bis 10 Zeilen).
Copyright © 1997, 1998, 1999, 2000, 2001, 2004, 2005 Dr. Christian Demuth
Most recent revision 17.02.2005 via
localsystems@infosys
Original revision via
ftp://hpv17.infosys.tuwien.ac.at/home/hpv17/webby/docs/Staff/cd/
Y2K revision via
ftp://pent21.infosys.tuwien.ac.at/home/WWW/People/cd/