/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* serveur.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lkantzer <lkantzer@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/21 03:54:11 by lkantzer #+# #+# */ /* Updated: 2025/04/21 04:21:15 by lkantzer ### ########.fr */ /* */ /* ************************************************************************** */
minitalk
Transmettre un message avec deux signaux seulement
Un client et un serveur qui communiquent uniquement par signaux UNIX, bit par bit.
- 2 signaux
- canal
- 1 bit
- granularité
- aucune
- dépendances
Le protocole
Deux processus qui ne partagent rien : ni fichier, ni tuyau, ni mémoire commune. Le seul canal disponible est la paire de signaux que UNIX laisse à l'utilisateur — et un signal ne transporte aucune donnée, seulement le fait d'être arrivé.
SIGUSR1 → 0 SIGUSR2 → 1
- 01Le serveur
Démarre, affiche son PID, et attend. C'est ce numéro que le client doit connaître pour lui parler.
- 02Le client
Reçoit ce PID et un message, puis découpe chaque caractère en huit bits.
- 03Un bit
Un signal envoyé au serveur pour un zéro, l'autre pour un un. Rien d'autre ne circule.8 signaux par caractère
- 04Le gestionnaire
Côté serveur, il accumule les bits reçus dans un octet en cours. Il doit rester minimal : un handler de signal n'a le droit de presque rien faire.
- 05La fin
Un octet complet est affiché ; l'octet nul marque la fin du message.
Aucun accusé de réception n'existe : si le client émet plus vite que le serveur ne traite, des signaux se perdent sans que personne ne s'en aperçoive. Tout le réglage tient dans la pause entre deux bits.
Aucun canal, aucun accusé de réception : le client découpe le message en bits et n'a que SIGUSR1 et SIGUSR2 pour les transmettre. Le gestionnaire côté serveur doit rester minimal — il n'a le droit de presque rien faire entre deux réceptions.
- 01Un signal pour zéro, l'autre pour un — rien d'autre
- 02Le serveur reconstruit les octets au fil des réceptions
- 03Le gestionnaire de signal reste réduit au strict minimum
- 04Embarque sa propre implémentation de printf
Un canal sans accusé de réception
Les signaux ne s'empilent pas de façon fiable. Le rythme d'émission doit tolérer aussi bien les pertes que les rafales.