Netzprogrammierung (WS 2007/2008)  19538

Übungsblatt   1
Ausgabe 23.10.07
Abgabe 30.10.07 - 14°°
Aufgaben Die zu verwendende Programmiersprache ist stets JAVA!
  1. Implementieren Sie ein einfaches Chatprogramm bestehend aus Server und Client. Für beide Programmteile ist keine graphische Oberfläche erforderlich. Mit ihrem Chatprogramm soll man mit einer oder auch mehreren Personen chatten können. Es soll ein Menü geben, so dass man entweder einen neuen Chat starten, oder einem bereits bestehenden Chat beitreten kann. Einer einkommenden Chatanfrage kann man zustimmen, oder sie ablehnen. Beim Gruppenchat müssen alle schon im Chat registrierten Benutzer der Anfrage zustimmen. Wenn ein Chatteilnehmer nicht innerhalb von 10 sek antwortet, gilt seine Antwort als "nein". Verwenden Sie für den Server die Portnummer 30XX, wobei XX Ihre Gruppennummer ist.

    Für Testzwecke können Sie ihren Server auf einem Uniserver (z.B. vader) laufen lassen.

    Aufrufsyntax:

    java -jar chatserver.jar

    java -jar chatclient.jar [serveradresse] [port] [benutzername]

    Das zu implementierende Protokoll:

    Client -> Server:

    • **list (zeigt alle bestehenden Channels an, nur im Menümodus)
    • **join [channel] (einem Channel beitreten, nur im Menümodus)
    • **create [channel] (einen Channel erstellen, nur im Menümodus)
    • **exit (beendet Programm, Chat verlassen)
    • **ja (Einer Anfrage zustimmen)
    • **nein (Eine Anfrage ablehnen)

    Der Server verschickt Nachrichten von einem User als [username] gefolgt von der Nachricht und alle "Servernachrichten" als [SERVER] gefolgt von der Nachricht.

  2. Implementieren Sie einen Timer auf UDP-Basis. Die Stunden, Minuten und Sekunden sollen dabei in getrennten UDP Paketen übermittelt werden, der Timer soll nach Erhalt des letzten Paketes loslaufen und ein UDP-Paket als Alarm an den Klienten zurückliefern. Der Klient soll auf den Alarm warten, und solange blockieren.
    Bedenken Sie, dass bei UDP die Pakete nicht unbedingt reihenfolgengetreu verschickt werden. Dafür müssen Sie selber sorgen.
  Die Abgabe der Lösungen erfolgt auf zwei Wegen
 
  • Abgabe auf Papier:
Bitte schreiben Sie zur jeder Aufgabe eine Dokumentation, in der Sie anhand von *relevanten* Codefragmenten Ihre Implementierung erläutern. Die Codefragmente sollten möglichst kurz gehalten werden und nur der Orientierung für den Leser dienen; entscheidend sind Ihre Erläuterungen, was diese Fragmente machen und wieso Sie sich für diese Art der Implementierung entschieden haben. Erläutern Sie auch, welche Art der Fehlerbehandlung Sie vorgenommen haben, insbesondere bezüglich der Fehler, die erst bei verteilten Systemen auftreten. Die Dokumentation ist in den Tutorien abzugeben.
 
  • Abgabe per E-Mail:
Schicken Sie ein Archiv an Ihren Tutor, welches den vollständigen Quellcode sowie ausführbare JAR-Dateien für die jeweiligen Aufgabenteile enthält. Der Betreff der E-Mail sollte wie folgt anfangen: "[ALP5] Gruppe X ....".
 

Diskussionsaufgaben, die nicht als Abgabe beantwortet werden sollen. Wir diskutieren sie in der Übung, Sie sollten sich im Rahmen dieser Aufgaben auf die Klausur vorbereiten.

Block Sockets

  1. Was ist das Internet Protocol IP
  2. Wie sehen Internet Adressen aus und wie werden sieauf lokale Netzadressen abgebildet?
  3. Welcher Dienst bildet Internet Adressen auf Namen ab und umgekehrt?
  4. GebenSie je zwei Beispiele aus der realen Welt - also nicht aus der Netztechnik - für verbindungsorientierte und -lose Protokolle an.
  5. Nennen Sie drei Transportprotokolle des Internet und stellen Sie Unterschiede zwischen ihnen dar.
  6. Was ist ein Port?
  7. Was ist ein Socket?
  8. Wie funktioniert die Kommunikation über TCP serverseitig?
  9. Wie funktioniert die Kommunikation über TCP clientseitig?
  10. Wie funktioniert die Kommunikation über UDP serverseitig?
  11. Wie funktioniert die Kommunikation über UDP clientseitig?
  12. Wie verwendet man in Java Multicast?