Hébergeur de fichiers indépendant

SERVEUR.py

À propos

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: 3 heures
Statistiques
La présente page de téléchargement a été vue 151 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


Télécharger SERVEUR.py


Télécharger SERVEUR.py