chat4us / Heinz Alenfelder

Vorschlag zur Programmierung eines zeilenorientiert arbeitenden Chat-Servers sowie des dazu passenden Chat-Client-Programms

 

Problembeschreibung:

Auf Port 54711 eines Linux-Rechners soll ein Chat-Server c4us-server gestartet werden.

 

Auf beliebigen Linux-Anlagen soll ein Chat-Client c4us-client gestartet werden.

 

Der Chat-Client c4us-client

Dem Client wird beim Aufruf als Parameter einen Nickname übergeben (oder dieser muss nachträglich als Eingabe von Stdin angefordert werden).

Der Client sendet als erstes die Zeile mit dem Nicknamen an den Server (der den Nicknamen im Gespräch verwendet).

Der Client wechselt dann in den interaktiven Modus, d.h. er zeigt, was an Beiträgen vom Server kommt, schreibt nach jedem Beitrag einen Prompter und liest die Zeilen, die der User auf Stdin eingibt.

 

Beispiel Client:

... Start mit „c4us-client Ali” ...

> hallo gemeinde

[Ali]: hallo gemeinde

>

[Evi]: nee, nicht schon wieder der ;-))))

>

[Tux]: Ich glaub, mein Fenster ist verschmiert ...

>

[Siggi]: nice to meet you, ali

>

 

Der Chat-Server c4us-server

Der Server führt eine Liste der akzeptierten Client-Sockets sowie der passenden Nicknames.

Er prüft die Sockets auf eingehende Zeilen, die er dann an alle Clients mit dem in eckigen Klammern vorangestellten Nickname des Senders weitergibt.

 

Hinweis zum Server:

Wahrscheinlich reagiert der Server selbst derart auf das accept, dass er den Nickname noch selber abfragt und in seine Liste einträgt. Dann dürfte ein fork() angebracht sein. Allerdings muss die Kommunikation zwischen den serverseitigen Client-Prozessen und dem Server-Hauptprozess sichergestellt sein (damit der Server auch merkt, von wem eine Nachricht an die anderen weitergeleitet werden muss).