Vous êtes sur la page 1sur 2

BUT Informatique Graphique

Le Puy en Velay R2.04


TP 4
Informatique Graphique 1 Pierre-Yves Bischoff

⌈ Programmation Socket sous linux ⌋


Avant de faire de l’analyse de trame on va comprendre comment marche un serveur TCP (base de
presque toutes nos communications web). Je vous ai mis le cours (un peu ancien mais d’actualité dans
les concepts) pour comprendre le fonctionnement du réseau.

⌞ Exercice 1 : Un peu de théorie ⌝

L’échange entre un client et un serveur en TCP peut-être schématisé de la manière suivante :

Le serveur écoute les requêtes sur le port configuré et attend les demandes de connexions.
Le client initie l’échange en faisant une demande vers une adresse IP et un numéro de port.
Dans la demande le client fournit son adresse et le numéro du port qu’il a ouvert pour la communication.

Informatique Graphique 1 - R2.04 TP 4 - Page 1/2


En résumé : le serveur devra :
— créer une socket d’écoute en mode connecté : socket(PF_INET, SOCK_STREAM,0);
— initialiser le point de communication local à partir d’une structure sockaddr_in en rensei-
gnant les champs sin_port et sin_addr.
— attacher la socket créée au points de communication : bind
— initialiser la socket d’écoute en attente passive : listen
— attendre la demande connexion : accept
— échanger des données avec read et write.
Le client lui devra :
— créer une socket d’écoute en mode connecté : socket(PF_INET, SOCK_STREAM,0);
— initialiser le point de communication local à partir d’une structure sockaddr_in en rensei-
gnant les champs sin_port et sin_addr.
— connecter la socket créée avec le serveur : connect
— échanger des données avec read et write.
1. Tester le serveurTCP.c fourni en utilisant netcat en client. Donner la commande exécutée.
2. Tester le clientTCP.c fourni en utilisant netcat en serveur. Donner la commande exécutée.
3. Tester le clientTCP.c avec le serveurTCP.C. Donner l’affichage obtenu.
4. Qu’est-ce qu’une socket ?
5. Donnez les deux informations qui définissent un point de communication.
6. Comment le serveur connaît-il le port utilisé par le client ?
7. Comment le client connaît-il le port utilisé par le serveur ?

⌞ Exercice 2 : Amélioration du clientTCP ⌝

1. Modifier le clientTCP.C pour qu’il puisse se connecter sur n’importe quel serveur et n’importe
quel port en passant les arguments en ligne de commande : ./clientTCP 192.168.1.125 8080
2. Ajouter la gestion d’erreur en affichant son usage si le nombre d’arguments n’est pas bon.
./clientTCP
Erreur : argument manquant !
Usage : ./clientTCP1 adresse_ip_serveur numero_port_serveur

⌞ Exercice 3 : Amélioration du serveurTCP ⌝

1. Vous devez modifier le serveurTCP afin qu’il affiche les informations (adresse IP et numéro de
port) identifiant le client qui vient de se connecter. Il vous faut utiliser la fonction getnameinfo
pour obtenir ces informations.
2. Donner l’affichage obtenue avec votre nouveau serveur suite à une connection du clientTCP.

Informatique Graphique 1 - R2.04 TP 4 - Page 2/2

Vous aimerez peut-être aussi