TP5 : uCLinux, socket


Mise en situation
Le travail de ce TP se déroule seul.
Temps alloué : 6h
Le serveur sera la carte ColdFire programmée en C, le client sera un PC programmé en Java.
|
Objectif
- C4.5 Ecrire les programmes de communication entre machines
|
Pré requis
- Environnement Linux.
- Utilisation de programmes multitâches.
- Programmation en C Ansi et Java + TP4
|
Travail demandé
Listing commenté.
|
Critères d’évaluation
Autonomie, apprentissage d’un nouvel environnement de travail, maîtrise de la commande vfork, communication socket.
|
But du TP :
Créer un serveur de socket sur une carte embarquée.
Principe du TP :
Dans le TP1/2, nous avons réalisé un chenillard et une interface E/S en programmant le port parallèle C de la carte ColdFire. En gardant l’ossature du programme, nous allons réaliser un serveur socket (toujours en C) sur la carte qui permettra de communiquer avec plusieurs clients (multitâches) et qui leur transmettra l’état du portC. La communication se fera entre ColFire et PC (langage Java pour le client voir tp4).
Déroulement du TP :
Communication socket
- Communication :Ecrire le minimum pour permettre la communication entre la carte et le PC. C'est à dire, écrire les deux programmes qui permettent à un client d'envoyer "bonjour" au serveur (sur la carte) qui répond directement (sans vfork) "salut".
- Au niveau serveur, créer un nouveau processus qui traitera la réponse pour le client. A l’accept, faire un vfork pour communiquer avec le client via la socket de communication, le père reviendra se mettre sur l’accept.
- Au niveau client , créer l’interface qui permette de représenter l’information envoyer par le serveur. Dans un premier temps, nous n’utiliserons pas de multi-processus. L’information de communication entre le serveur/client restera basique, bonjour/salut toutes les secondes.
- Pour améliorer l’interface, il faudra mettre deux champs de saisie (adresse IP et Numéro de port). Plus deux boutons, un pour la connexion, un pour la déconnexion.
- Créer une trame permettant :
- Choisir la lecture d’une broche précise
- Recevoir l’état du port B (kit) en entier
- De se déconnecter.
- Si nous n’utilisons pas de multi-processus au niveau client, l’IHM restera bloqué. Pour éviter cet inconvénient, créer un processus de communication. Pour ce faire :
- Créer une nouvelle classe qui dérive de Thread
- Rajouter la méthode public void run(){… qui bouclera à l infini. C’est elle qui communiquera avec le serveur, donc créera la socket et ses flux de données.
- Passer l’adresse de l’IHM dans le constructeur pour permettre d’afficher la reception.
- Dans l’IHM, lors du clic de connexion, créer le processus d’ écoute :
ecoute = new Comm(this);
ecoute.start();
où ecoute est un objet de votre nouvelle classe.

