mercredi 22 février 2012, 18:32:04 (UTC+0100)

Initiation au développement réseau

Je viens de publier une version entièrement revue et corrigée du document Les sockets en Langage C.

comparaison modélisation réseau contemporaine et architecture noyau

Le document ne contient vraiment rien d'extraordinaire pour un développeur chevronné. L'objectif ici est de démystifier ce type de développement et d'amener un étudiant de niveau bac+2 à considérer que l'utilisation des sockets est tout à fait abordable.

Je suis satisfait de l'idée des échanges de chaînes de caractères entre deux hôtes réseau. Les étudiants voient ça comme une sorte de chat et «accrochent» plutôt bien. Pour cette édition 2012, je suis passé à un code 100% C puisque les entrées/sorties formatées doivent être réutilisées par la suite dans d'autres enseignements.

Je suis cependant embarrassé avec l'utilisation de scanf pour la saisie de chaînes de caractères comprenant des espaces ou des tabulations. J'ai abouti à la syntaxe suivante, qui n'est pas vraiment adaptée au débutant en Langage C. Je n'ai pas voulu faire de compromis avec les éventuels débordements de la mémoire tampon du flux d'entrée standard.

#include <stdio.h>

#define MAX_MSG 100
// 2 caractères pour les codes ASCII '\n' et '\0'
#define MSG_ARRAY_SIZE (MAX_MSG+2)
// Utilisation d'une constante x dans la définition
// du format de saisie
#define str(x) # x
#define xstr(x) str(x)

int main() {

  char msg[MSG_ARRAY_SIZE];

// snip
  puts("Saisie du message : ");
  memset(msg, 0x0, MSG_ARRAY_SIZE); // Mise à zéro du tampon
  scanf(" %"xstr(MAX_MSG)"[^\n]%*c", msg);
// snip

  return 0;
}

L'utilisation de ce support la semaine prochaine viendra clore la série de cours, travaux dirigés et travaux pratiques sur les réseaux de télécommunications en seconde année de DUT Génie Électrique & Informatique Industrielle à Toulouse. Certains supports comme celui sur la technologie Ethernet sont à retravailler. Bref, j'ai encore du pain sur la planche.


Posté par Philippe Latu | permalien | dans : dev, réseau, travaux_pratiques | Read it in english with Google
blog comments powered by Disqus