Logo Mon Club Elec

Ethernet en mode serveur : Afficher la requête reçue du navigateur

L’Ethernet en mode serveur est un protocole de communication réseau qui permet aux ordinateurs de communiquer entre eux. Il est largement utilisé pour le partage de fichiers, l’accès à Internet et la transmission de données. Une des fonctionnalités intéressantes de l’Ethernet en mode serveur est la possibilité d’afficher la requête reçue du navigateur. Cette fonctionnalité permet aux administrateurs réseau de surveiller et de contrôler le trafic réseau et de détecter les tentatives d’intrusion. Dans cet article, nous allons examiner en détail comment afficher la requête reçue du navigateur lorsque l’Ethernet est configuré en mode serveur.

Ethernet en mode serveur : Afficher la requête reçue du navigateur

Ethernet en mode serveur : Afficher la requête reçue du navigateur

1.  Présentation

Ce programme très simple consiste à configurer la carte Arduino couplée au module Ethernet en serveur HTTP et à afficher dans une fenêtre Terminal sur le PC l’intégralité de la requête HTTP envoyée par le navigateur client au serveur.

Ce qui est intéressant ici, c’est de mettre en évidence la partie « cachée » de ce qui se passe lorsque l’on saisit une adresse depuis son navigateur. Si par exemple, on saisit l’adresse IP de la carte Arduino dans le navigateur Firefox, le navigateur va envoyer une requête appelée GET au serveur en lui donnant au passage une série d’informations.

Le point important ici : constater que toute requête reçue va se terminer par une ligne blanche, c’est-à-dire 2 sauts de lignes successifs sans autre caractère. Ceci sera utilisé dans les programmes que nous écrirons pour détecter que la requête reçue du client a été reçue en intégralité et est terminée. Le serveur pourra alors envoyer sa réponse… mais ceci sera l’objet d’un prochain programme.

Pour plus de détails sur le protocole HTTP, voir : http://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol

2.  Matériel Nécessaire

2.1  L’espace de développement Arduino

  • … pour éditer, compiler le programme et programmer la carte Arduino.
Ethernet en mode serveur : Afficher la requête reçue du navigateur

2.2  Le matériel suivant pour réaliser le montage associé

  • un module Arduino Ethernet
Ethernet en mode serveur : Afficher la requête reçue du navigateur

3.  Etapes préparatoires

On va créer ici un réseau local entre le PC et la carte Arduino. La première chose à faire est de connaître l’adresse IP de l’ordinateur avec lequel on va créer le réseau ainsi que le masque du sous-réseau en vigueur.

Sous Ubuntu, dans une console, on obtient cette information avec la commande ifconfig

Ethernet en mode serveur : Afficher la requête reçue du navigateur

Dans notre cas, on a donc :

  • adresse IP du PC : 169.254.10.1
  • masque du sous-réseau : 255.255.255.0

Pour créer un réseau local entre la carte Arduino et le PC, on utilisera donc pour la carte Arduino :

  • une adresse IP de la forme : 169.254.10.x (sauf 169.254.10.1 )
  • et le même masque de sous-réseau : 255.255.255.0

Pour info : le masque de sous-réseau indique quelle partie de l’adresse IP correspond au réseau et quelle partie au sous-réseau. Ici, la partie 169.254.10 correspond au numéro du réseau et .x correspond au sous-réseau.

Voir ici pour configurer l’attribution d’adresse en mode statique sous Ubuntu

4.  Instructions de montage

  • Le montage à réaliser est très simple : il suffit d’enficher le module Arduino Ethernet sur la carte Arduino UNO ou Duemilanove.
  • Ensuite, on connecte la carte Arduino au port USB
  • On connecte également le module Arduino au PC à l’aide d’un câble Ethernet.

5.  Le circuit du montage

Ethernet en mode serveur : Afficher la requête reçue du navigateur
Le schéma du montage à réaliser

6.  Explication du programme

  • Ce programme va tester la présence d’un client connecté au serveur.
  • Une fois le client détecté, les caractères reçus vont être affichés dans le Terminal série.

7.  Fonctionnement

7.1  Réinitialiser et tester la connexion réseau

  • Une fois la carte programmée, appuyer sur le BP reset pour que le module ethernet prenne en compte la nouvelle configuration.
  • Ensuite, on peut refaire un « ping » vers la carte Arduino depuis le PC. Sous Ubuntu, ceci se fait dans une console à l’aide de la commande ping associée à l’adresse IP de l’ordinateur à tester. Ici, nous ferons :

$ ping -c 5 169.254.10.2

ce qui donne :

Ethernet en mode serveur : Afficher la requête reçue du navigateur

Comme on peut le voir ici, la carte Arduino répond bien au ping : cool ! C’est tout bête, mais au moins, on sait que çà marche…

7.2  Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l’IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
Ethernet en mode serveur : Afficher la requête reçue du navigateur
  • La fenêtre « Terminal » s’ouvre alors :
Ethernet en mode serveur : Afficher la requête reçue du navigateur
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :
Ethernet en mode serveur : Afficher la requête reçue du navigateur

7.3  Ouvrir le navigateur et taper l’adresse IP de la carte Arduino :

  • Ensuite, il faut ouvrir un navigateur, Firefox bien sûr!, et taper dans la barre d’adresse l’adresse IP de la carte Arduino : 169.254.10.2 dans notre cas.
  • A présent, la requête reçue s’affiche alors dans la fenêtre Terminal série :
Ethernet en mode serveur : Afficher la requête reçue du navigateur

8.  Le programme complet en langage Arduino :

A copier/coller directement dans l’éditeur Arduino


// --- Programme Arduino ---
// Copyright X. HINAULT - Créé le 02/10/2010
// www.mon-club-elec.fr 

//  Code sous licence GNU GPL : 
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License,
//  or any later version.
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
//  

// --- Que fait ce programme ? ---
/* Ce programme configure le module Ethernet
couplé à la carte Arduino en serveur HTTP
On crée un réseau local avec le PC.

Ce programme affiche dans un Terminal série
la requete reçue depuis le navigateur du PC

*/

// --- Fonctionnalités utilisées ---

// --- Circuit à réaliser ---

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies incluses, les constantes, les variables...

// --- Inclusion des librairies utilisées ---
#include <SPI.h>
#include <Ethernet.h>
#include <Server.h>
#include <Client.h>


// --- Déclaration des constantes ---

// --- constantes des broches ---

// --- Déclaration des variables globales ---

//--- déclaration du tableau d'adresse MAC ---
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

//---- tableau de l'adresse IP de la carte Arduino
byte ip[] = { 169,254,10,2 }; // le PC a pour IP : 169.254.10.1

//----- tableau de l'adresse de la passerelle --- 
byte passerelle[] = { 169, 254, 10, 1 }; // l'adresse du PC de connexion

//----- tableau du masque de sous réseau 
byte masque[] = { 255, 255, 255, 0 }; // idem masque sous-réseau du PC : 255.255.255.0


// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

//--- création de l'objet serveur ----
Server serveurHTTP(80); // crée un objet serveur utilisant le port 80 = port HTTP

//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage --- 

//---- initialise la connexion Ethernet avec l'adresse MAC, l'adresse IP et le masque
Ethernet.begin(mac, ip, passerelle, masque); 

//---- initialise le serveur ----
serveurHTTP.begin(); 

//----initialise connexion série 
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission 

} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal --- 

// crée un objet client basé sur le client connecté au serveur
  Client client = serveurHTTP.available();

  if (client) { // si l'objet client n'est pas vide
   // le test est VRAI si le client existe 


    // message d'accueil dans le Terminal Série
      Serial.println ("Client present !"); 
      Serial.println ("Voici la requete du client:"); 
      Serial.println (); // saut de ligne

    // affichage des caractères de la requete envoyés par le client 
    while (client.connected()) { // tant que le client est connecté

      if (client.available()) { // si des octets sont disponibles en lecture
      // le test est vrai si il y a au moins 1 octet disponible

        char c = client.read(); // l'octet suivant reçu du client est mis dans la variable c

        Serial.print(c); // affiche le caractère reçu dans le Terminal Série


      } // --- fin client.available

      else { // si pas de caractères disponibles

        Serial.println ("Reception requete terminee"); 
        Serial.println ("La derniere ligne est une ligne vide"); 
        while(1); // stoppe ici 
      }

    } // --- fin tant que client connected

  } //---- fin if client ---- 


} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme ---


Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.