4682. leçon2

0. Pour programmer une messagerie instantanée en deux minutes, nous allons écrire deux scripts en Python et les exécuter chacun dans une console. Les deux programmes vont communiquer afin d'envoyer un message et d'attendre la réponse.

Écoute

1. Ouvrir un éditeur de texte, et coller le script suivant (sans caractère spéciaux comme "é")...

Script de "ecoute.py"

#!/usr/bin/python# -*- coding: latin-1 -*-import socket # importe un ensemble d'instructions pour connecter les programmes. # Cet ensemble est disponible a l'installation de Python, dans la bibliotheque de base. # Creation du connecteur d'ecoute par l'instruction 'socket' # de la bibliotheque socket precedemment importee. Connecteur = socket.socket(socket.AF_INET,socket.SOCK_STREAM) Hote = '127.0.0.1' # Adresse locale de l'ordinateur. Port = 80 # Choix d'un port d'ecoute. Connecteur.bind((Hote,Port)) # instruction 'bind' de la bibliotheque du connecteurprint "Le programme est a l'ecoute d'une eventuelle discussion, vous en serez averti." # Rajoutez des parentheses pour Python 3 ! Connecteur.listen(1) # ecoute... client, adresse = Connecteur.accept() # accepte...print "L'ordinateur",adresse," veut discuter ! J'attends son message." # Rajoutez des parentheses pour Python 3 ! # Creation du connecteur de reponse Reponse = socket.socket(socket.AF_INET,socket.SOCK_STREAM) Portreponse = 234 Reponse.connect((Hote,Portreponse ))print "Note : je me suis connecte a",adresse," pour lui repondre" # Rajoutez des parentheses pour Python 3 ! while 1: Message = client.recv(255) # reception de la reponse, 255 caracteres max ; Python 3 : Message = str(client.recv(255),'mac_roman') if not Message: break print "\nMessage : ",Message,"\a" + "\n\nVotre reponse :" # Rajoutez des parentheses pour Python 3 ! msgR = raw_input('>> ') # votre message ? Python 3 : msgR = bytes(input('>> '), 'mac_roman') Reponse.send(msgR) # envoi. client.close() # ferme la connexion lorsque le client est parti : [ctrl+C] pour abandonner l'execution du programme.

...enregistrez ce script (par exemple ecoute.py) et exécutez-le.

Discussion

2. Ouvrir l'éditeur de texte, écrire le script de discussion...

Script de "discussion.py"

#!/usr/bin/python# -*- coding: latin-1 -*-import socket Discuter = socket.socket(socket.AF_INET,socket.SOCK_STREAM) Hote = '127.0.0.1' Port = 80 Port_de_reponse = 234 Discuter.connect((Hote,Port)) # Se connecte au programme ecoute.py Reponse = socket.socket(socket.AF_INET,socket.SOCK_STREAM) Reponse.bind((Hote,Port_de_reponse)) Reponse.listen(1) client, adresse = Reponse.accept() # Creation du connecteur pour la reponse de ecoute.pyprint "L'adresse",adresse," vous a entendu et attend votre message." # Rajoutez des parentheses pour Python 3 !while 1: msg = raw_input('>> ') # votre message ? Python 3 : msg = bytes(input('>> '), 'mac_roman') Discuter.send(msg) # envoi. print "Attente de la reponse..." # Rajoutez des parentheses pour Python 3 ! reponseaumessage = client.recv(255) # reception de la reponse, 255 caracteres max ; Python 3 : reponseaumessage = str(client.recv(255),'mac_roman') if not reponseaumessage: break print "\n",adresse,":",reponseaumessage,"\a\n" # affiche la reponse # Rajoutez des parentheses pour Python 3 ! client.close() # ferme la connexion lorsque le client quitte.

...enregistrez ce script (par exemple discussion.py) et exécutez-le dans une nouvelle console.

Félicitation, vos deux consoles communiquent !