15

Exercice : écrire un service de journalisation

Serveur

Ecrire un programme serveur appelé slog qui est à l'écoute sur un socket INET TCP.
Après l'établissement de la connexion avec un client, lire les messages qu'il envoie et les enregistrer dans un fichier.
Un client doit pouvoir envoyer plusieurs messages.
Le serveur doit être persistant.
Le journal est conservé d'une exécution à l'autre (créer le fichier du journal si nécessaire).

Le programme attend un seul type de message :

LOG text'\n'

Noter qu'un message doit impérativement commencer par le mot LOG suivi d'un espace et se terminer par un renvoi à la ligne (NEWLINE).
La longueur maximum totale d'un message (préfixe + espace + texte + renvoi à la ligne) est fixée à 1024 octets.

Chaque message enregistré est horodaté et préfixé par le mot LOG et l'adresse IP de l'expéditeur :

24/12/10 23:59:05 127.0.0.1 LOG Santa is coming!

Si un message est trop long, le tronquer.
Si un message est mal formé, fermer la connexion et enregistrer l'erreur dans le journal (détection d'intrusion) :

31/12/10 12:02:14 127.0.0.1 BADMSG

Au lancement et à l'arrêt du programme, enregistrer l'événement dans le journal :

31/12/10 08:12:45 127.0.0.1 START

31/12/10 18:27:19 127.0.0.1 STOP

Client

Ecrire un programme client appelé clog qui se connecte au serveur et lui envoie chaque ligne de texte lue sur le flux d'entrée standard.

Options

Ajouter la lecture des paramètres du serveur et du client sur la ligne de commande.

slog [-p port_num] [log_file]

clog [-h host_name] [-p port_num]

Ecrire un serveur capable de gérer plusieurs connexions simultanées.
Le tester avec au moins 2 clients et montrer dans le journal que les messages sont bien entremélés.

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].