PROFDINFO.COM

Votre enseignant d'informatique en ligne

Communication déconnectée

Pour ce laboratoire, vous allez devoir développer deux petits logiciels de communication UDP. Le but du laboratoire est de vérifier ce qui arrive lorsque le serveur ne répond pas.

Inspirez-vous du code fourni pour la démonstration des sockets UDP comme point de départ.

L'émetteur

L'émetteur demande à l'usager l'adresse du récepteur, le port sur lequel émettre, la quantité de nombres à envoyer et la probabilité qu'un nombre généré soit envoyé. Pensez à avoir des valeurs par défaut de prêtes pour accélérer les tests (si l'usager ne répond rien, la valeur par défaut est utilisée - 127.0.0.1 serait une bonne adresse par défaut).

L'émetteur génèrera en effet des nombres aléatoires et n'enverra un nombre au récepteur qu'une fois de temps en temps (selon la probabilité donnée, par exemple 1 fois sur 10). Ceci permettra de contrôler le débit d'émission en simulant un tas de données traitées dont certaines n'ont pas besoin d'être envoyé à l'autre partie.

Vous devez afficher en temps réel la quantité de nombres générés et la quantités envoyés. Le client terminera sur une pause lorsqu'il aura envoyé suffisamment de nombres (un simple Console.Read() fera l'affaire).

Pensez à attrapper et à afficher les exceptions de façon claire et détaillée.

Le récepteur

De son côté, le récepteur demande le port d'écoute (encore une fois, pas de réponse = valeur par défaut prédéterminée, l'idéal étant de prendre la même que la valeur par défaut de l'émetteur), puis attend des nombres. Lorsqu'il en reçoit un, il s'endort pour nombre*100 ms, question de simuler un traitement de son côté. Il retombe ensuite en attente.

Il devra afficher la quantité de nombres reçus en temps réel, puis afficher un message lorsqu'il est "en traitement", de façon à ce que l'on puisse suivre ce qui se passe.

Pensez à attrapper et à afficher les exceptions de façon claire et détaillée.

Les questions

1- Que se passe-t-il, lorsque l'émetteur et le récepteur sont sur la même machine, et que l'émetteur envoie plus vite que le récepteur peut recevoir (parce qu'il fait trop de traitement à chaque coup)?

2- Qu'arrive-t-il si les deux parties sont sur des machines distantes, mais que les autres paramètres sont inchangés?

3- Que se passe-t-il si le câble réseau du récepteur est débranché au beau milieu de l'exécution? Et si on le rebranche avant que l'exécution soit terminée? (Donnez-vous du délai!)

4- Qu'arrive-t-il si c'est celui de l'émetteur qui est débranché?

5- À part un problème physique, de quelle façon un datagramme UDP envoyé par l'émetteur pourrait ne pas être traité par le récepteur?

La remise

  • Le labo est à remettre le 18 novembre 2009 à 8h55.
  • Envoyez-moi par courriel un .zip de vos projets (assurez-vous de ne pas y laisser trainer d'exécutables, ou de renommer le .zip en .autrechose sinon Gmail refusera votre message). Inscrivez-y également les réponses aux questions.
  • La période de laboratoire du 11 novembre sera réservée à ce travail.
  • Vous pouvez faire le travail en équipes de deux.