SERVEUR.py
À propos du fichier
- Type de fichier
- Fichier PY de 2 Ko (text/x-python)
- Confidentialité
- Fichier public, envoyé le 31 décembre 2017 à 19:06, depuis l'adresse IP 86.249.x.x (France)
- Sécurité
- Ne contient aucun Virus ou Malware connus - Dernière vérification: 14 heures
- Statistiques
- La présente page de téléchargement a été vue 874 fois depuis l'envoi du fichier
- Page de téléchargement
-
Aperçu du fichier
# Définition d'un serveur réseau gérant un système de CHAT simplifié.
# Utilise les threads pour gérer les connexions clientes en parallèle.
HOST = ''
PORT = 23
import socket
import sys
import threading
class ThreadClient(threading.Thread):
'''dérivation d'un objet thread pour gérer la connexion avec un client'''
def __init__(self, conn):
threading.Thread.__init__(self)
self.connexion = conn
def run(self):
# Dialogue avec le client :
nom = self.getName() # Chaque thread possède un nom
while 1:
msgClient = self.connexion.recv(1024)
msgClient = msgClient.decode()
if msgClient.upper() == "FIN" or msgClient =="":
break
message = "{} >>> {}".format(nom, msgClient).encode()
print (message.decode())
# Faire suivre le message à tous les autres clients :
for cle in conn_client:
if cle != nom: # ne pas le renvoyer à l'émetteur
conn_client[cle].send(message)
# Fermeture de la connexion :
self.connexion.close() # couper la connexion côté serveur
del conn_client[nom] # supprimer son entrée dans le dictionnaire
print ("Client %s deconnecte." % nom)
# Le thread se termine ici
# Initialisation du serveur - Mise en place du socket :
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
mySocket.bind((HOST, PORT))
except socket.error:
print ("La liaison du socket à l'adresse choisie a échoue.")
sys.exit()
print ("Serveur pret, en attente de requetes ...")
mySocket.listen(5)
# Attente et prise en charge des connexions demandées par les clients :
conn_client = {} # dictionnaire des connexions clients
while 1:
connexion, adresse = mySocket.accept()
# Créer un nouvel objet thread pour gérer la connexion :
th = ThreadClient(connexion)
th.start()
# Mémoriser la connexion dans le dictionnaire :
it = th.getName() # identifiant du thread
conn_client[it] = connexion
print ("Client %s connecte, adresse IP %s, port %s." %\
(it, adresse[0], adresse[1]))
# Dialogue avec le client
connexion.send("#Hello !#".encode())
Partager le fichier SERVEUR.py sur le Web et les réseaux sociaux:
Télécharger le fichier SERVEUR.py