Loading s7crs_l06_tcp_socket...

enib_small.png S7-CRS L06_TcpSocket — Communication réseau en TCP

Les fichiers servant de support à cette expérimentation seront obtenus par la commande $ cp -r /home/TP/sujets/CRS_L06_TcpSocket . depuis les salles de Labo de l'ENIB, ou par la commande $ sftp -P 55555 -r votre_identifiant@sftp.enib.fr:/home/TP/sujets/CRS_L06_TcpSocket . depuis l'extérieur de l'ENIB.

Il s'agit d'une série d'exercices en rapport avec la communication entre des processus répartis sur différentes machines à travers des réseaux.
Au cours de cette séance nous ne nous appuierons que sur le protocole TCP, afin d'en découvrir l'usage et d'en constater les caractéristiques.

Chaque programme est volontairement très simple afin de se focaliser sur la découverte des services proposés sans être distrait par les détails annexes d'une quelconque application particulière.
Il convient de traiter ces exercices tranquillement, en s'interrogeant à chaque fois sur le propos de la fonctionnalité particulière qui est mise en avant.
Il ne sert strictement à rien d'enchaîner les exercices sans les comprendre en se contentant de “ça compile et ça ne plante pas donc j'ai bon, je passe à la suite...”

La consultation de la documentation est très importante et fait partie intégrante du travail.
Pour ceci vous disposez des pages de manuel indiquées à chaque exercice ainsi que de ces documents de programmation réseau.
En particulier, le document Memo_Sockets.pdf devrait beaucoup vous guider puisqu'il donne les portions de code usuelles qui servent de briques de base pour les communications en réseau (créer des sockets, choisir un port, recevoir, envoyer...).
Les exercices/exemples suivants ont d'ailleurs été conçus pour que vous réutilisiez facilement les informations du document en question.
Le fichier d'en-tête crsUtils.hpp doit également être consulté très régulièrement puisqu'il fournit, au delà de quelques fonctionnalités utilitaires, la mise à disposition dans une forme facilitée pour les étudiants (limitation des pointeurs, des conversions de types, utilisation de chaînes et vecteurs C++, contrôle des échecs...) des appels et fonctionnalités systèmes que nous utiliserons.

Vous êtes censés savoir refaire et réutiliser tous ces exercices lors des séances ultérieures ; n'hésitez donc pas à poser des questions lors de cette séance et à les refaire tout seul ensuite pour vous entraîner.
{1 #txt_tcp_server } Serveur TCP textuel simpliste
{2 #txt_tcp_client } Client TCP textuel
{3 #thread_txt_tcp_server } Serveur TCP textuel multi-threads
{4 #bin_tcp } Échanges binaires en TCP
{5 #select } Serveur TCP multiple

Nous venons de découvrir à travers le protocole TCP un moyen fiable d'établir une connexion et de communiquer par réseau.
Il est important de distinguer les rôles client et serveur :
Cette démarche reste la même quelle que soit la nature des données échangées (textuelles, binaires, les deux).