Main

Référence : Fonctions Pyduino

Classe EthernetServer : writeDataTo()


Description

  • Cette fonction permet d'écrire les données vers le client connecté obtenu préalablement avec la fonction clientAvailable(). A nouveau un gros avantage de cette fonction : elle reçoit en paramètre une chaîne str, qui pourra donc être multilignes : il sera par conséquent assez simple de renvoyer une page HTML de réponse tenant d'un seul bloc de texte, en non plus en écrivant ligne à ligne...
  • De plus les options de formatage de chaîne disponibles avec Python permettront facilement d'intégrer dans les pages de réponses des données issues de mesures par exemple.

Syntaxe

server.writeDataTo(clientDistant, response)

Paramètres

  • server : un objet EthernetServer défini par son IP locale et le port d'écoute
  • clientDistant : un objet client obtenu avec la fonction clientAvailable()
  • response : chaine str pouvant être multilignes

Valeur renvoyée

  • Aucune

Exemple:

Code *.yno à copier/coller dans l'IDE Pyduino
Voir ici si vous préférez convertir le code Pyduino en code Python pour l'utiliser avec l'éditeur Geany par exemple.


# exemple pyDuino - par X. HINAULT - www.mon-club-elec.fr
# Juin 2013 - Tous droits réservés - GPLv3

# test Ethernet Server

# entete declarative

ipLocale=Ethernet.localIP() # auto - utilise l'ip de l'interface eth0 du systeme

#ipLocale='192.168.1.25' # manuel - attention : utiliser la meme IP qu'une interface reseau du systeme
# pour connaitre les interfaces reseau sur le systeme : utiliser la commande $ ifconfig

print ipLocale # affiche l'adresse IP

port=8080 # attention port doit etre au dessus de 1024 sinon permission refusee par securite - 8080 pour http

serverHTTP=EthernetServer(ipLocale, port) # crée un objet serveur utilisant le port 8080 = port HTTP > 1024

#--- setup ---
def setup():
        global serverHTTP

        #serverHTTP.begin(10) # initialise le serveur - fixe nombre max connexion voulu
        serverHTTP.begin() # initialise le serveur - nombre max connexion par defaut = 5

#--- fin setup

# -- loop --
def loop():

        global serverHTTP

        print ("Attente nouvelle connexion entrante...")
        clientDistant, ipDistante = serverHTTP.clientAvailable() # attend client entrant
        # code bloque ici tant que pas client ! Si present, on recupere d'un coup objet client ET son ip

        print "Client distant connecte avec ip :"+str(ipDistante) # affiche IP du client

        #--- requete client ---
        requete=serverHTTP.readDataFrom(clientDistant) # lit les donnees en provenance client d'un coup

        print requete # affiche requete recue

        #--- reponse serveur ---
        reponse=( # ( ... ) pour permettre multiligne..
        httpResponse() # entete http OK 200 automatique fournie par la librairie Pyduino
        +"Serveur OK : " + nowdatetime() +"\n" # contenu page - ici date / heure du serveur
        ) # fin reponse

        serverHTTP.writeDataTo(clientDistant, reponse) # envoie donnees vers client d'un coup

        print "Reponse envoyee au client distant : "
        #print (bytes(reponse))
        print (reponse) # affiche la reponse envoyee

        #serverHTTP.close()
        # remarque : le socket = serveur doit rester ouvert

        # quand on quitte : la connexion TCP reste active un peu donc erreur si re-execution trop rapide
        # on peut utiliser un port voisin dans ce cas...

        delay(10) # entre 2 loop()

# -- fin loop --
 

Truc d'utilisation

  • Il est possible de placer les différents éléments d'une chaîne construite par la concaténation de plusieurs éléments en encadrant les éléments par des ( ) selon :
# ( ... ) pour permettre multiligne..
reponse=(        
httpResponse() # entete http OK 200 automatique fournie par la librairie Pyduino
+"Serveur OK : " + nowdatetime() +"\n" # contenu page - ici date / heure du serveur
) # fin reponse

Lien utile

Commentaires utilisateurs

Aucun commentaire.

Voir également


Page d'accueil de la référence Pyduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées à l'adresse suivante : support_at_mon-club-elec_point_fr

Cette page a été réalisée par Xavier HINAULT (2013) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.