(...)
// Nom du fichier à récupérer
char url [14];
// Cookies récupérés
char cookies [50];
(...)
void loop ()
{
EthernetClient client;
File descfic;
char valhaut [6], vallarg [6], valtime [15];
long timesec, hloc;
int heure, min, sec;
char heure_aff [10];
// Regarde si un client est connecté et attend une réponse
client = serveur.available ();
// si c'est le cas, quelqu'un est connecté
if (client)
{
// récupérer ce qu'il a envoyé
lire_trame_client (client, url, sizeof (url), 0, 0, cookies, sizeof (cookies));
// si aucun nom de fichier ne figure dans l'url
if (! url [1])
// mettre le nom du fichier d'accueil
strcpy (url, "cookies.htm");
// tenter d'accéder à au fichier HTML
descfic = SD.open (url, FILE_READ);
// si on n'a pas réussi, tenter la page d'erreur
if (! descfic)
descfic = SD.open (F("/err404.htm"), FILE_READ);
// envoi de l'entête de la page web
envoie_entete_reponse (client, url);
// si on accède au fichier html
if (descfic)
{
// récupérer la valeur des cookies, mettre un ? s'il n'y en a pas
if (! lecval_cookie ("hauteur", cookies, valhaut))
strcpy (valhaut, "?");
if (! lecval_cookie ("largeur", cookies, vallarg))
strcpy (vallarg, "?");
if (! lecval_cookie ("secondes", cookies, valtime))
strcpy (valtime, "?");
// afficher jusqu'à la taille de la fenêtre vue des cookies
coprep_chaine (descfic, client, "XXXLARG", vallarg);
coprep_chaine (descfic, client, "XXXHAUT", valhaut);
// puis l'heure locale du client vue du cookie
coprep_chaine (descfic, client, "XXXTIME", valtime);
// extraire l'heure locale
timesec = atol (valtime);
hloc = (timesec + 3600) % 86400;
heure = hloc / 3600;
min = (hloc / 60) % 60;
sec = hloc % 60;
// mise en forme
sprintf (heure_aff, "%2d:%02d:%02d", heure, min, sec);
// afficher l'heure locale vue du cookie
coprep_chaine (descfic, client, "XXXHLOC", heure_aff);
// envoi de la page ou de la fin de page
copie_jusque_fin (descfic, client);
// ferner le fichier HTML
descfic.close ();
}
// sinon message d'erreur
else
client.println (F("Probleme probable d'acces a la carte SD"));
Serial.println (F("Page envoyée\n"));
// Donne le temps au client de prendre les données
delay (10);
// Ferme la connexion avec le client
client.stop ();
}
}