TP1 sockets
Master 2 IISA (réseaux et protocoles)
IPST/ULP 2006-2007
1. Client/serveur UDP et TCP
- Réaliser un client/serveur UDP (type de socket
SOCK_DGRAM). Le client envoie des chaînes de caractères
que le serveur affiche sur son terminal.
- Adapter les programmes précédents pour permettre le
transfert de fichiers du serveur vers le client.
- Réaliser un client/serveur proposant en TCP les
mêmes services (envoie de chaînes de caractères,
puis envoie de fichiers).
2. Dialogue avec un serveur existant
- Ecrire un client qui se connecte à un serveur HTTP pour
récuperer
une page web (ex. www.3d-reconstruction.org).
- Ecrire un client qui se connecte à un serveur SMTP pour
envoyer
un mail.
les numéros de
port
associés à ces services se trouvent dans /etc/services.
les protocoles de
dialogue
entre un client et un serveur sont disponibles à l'adresse
suivante http://ietf.org/rfc.html. A titre
indicatif, le protocole HTTP est décrit dans le RFC (Request
For Comments) 2068 et le protocole SMTP dans le RFC 821
(section 3.1). Pour HTTP, utiliser uniquement la commande GET.
la commande telnet
m p établit une connexion TCP sur le port p
de la machine m permettant alors de tester les
protocoles.
3. Réalisation d'un talk multi-utilisateurs
On souhaite réaliser un système client/serveur
permettant de communiquer à plusieurs simultanément sur
le réseau. L'implantation se fera en TCP.
Coté client :
- le client envoie des messages (texte) au serveur.
- le client accepte les commandes suivantes saisies au clavier :
- /connect <surnom> <machine> <port>
: se connecte au serveur et se declare avec le surnom fourni en
paramètre.
- /quit : quitte le client et le signale au
serveur.
- /who : demande au serveur la liste des personnes
connectés et l'affiche dans le terminal
- /confidential <surnom> : demande au serveur de
créer une conversation privée et directe avec
l'utilisateur surnom
- /public : quitte le mode confidentiel
Coté serveur :
- le serveur rediffuse tous les messages (texte) qu'il
reçoit d'un de ces clients vers tous les autres clients
connectés.
- le serveur accepte les commandes suivantes :
provenant du clavier :
- /who : affiche la liste des clients au <surnom>
et en informe les clients restants.
- /shutdown : pour arrêter le serveur.
provenant d'un client :
- /connect : le serveur informe les autres clients de
l'arrivée du client émetteur de cette commande.
- /quit : le serveur informe les autres clients du
départ du client émetteur de cette commande.
Commande serveur subsidiaire :
- /kill <surnom> : coupe la connexion du client
correspondant