Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1718 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  multithread python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

multithread python

n°1707283
tsic
Posté le 25-03-2008 à 13:47:35  profilanswer
 

Bonjour,
Voici mon code que j'ai utilisé pour faire une communication entre un serveur et des clients.
Pouvez vous m'aider à l'améliorer pour que l'affichage soit meilleur dans les deux coté (je veux que le nom du thread soit afficher dans le serveur) et aussi il ya un probleme dans le coté client où l'envoye de données est répeté après "s>" je ne sait pas pourquoi. Vous pouvez l'executer sous dos.
Merci.
J'attends vos modifications et commentaires.:)
 
[B]code serveur:[/B]
from socket import *
import socket, sys, threading
import SocketServer
 
class GestionnaireEcho(SocketServer.BaseRequestHandler):
 
    def handle(self):
        print "Connexion de ", self.client_address
        while True:
            donneesRecues = self.request.recv(8192)
            if not donneesRecues: break
            print "Donnees Recues : ", donneesRecues
            self.request.sendall(donneesRecues)
            msg= raw_input("S> " )
            print "Donnees envoyees : ", msg
            self.request.send(msg)
             
        print "Deconnexion de ", self.client_address
 
class ThreadClient(threading.Thread):
    def __init__(self, conn):
        threading.Thread.__init__(self)
        self.connexion = conn
       
    def run(self):
 
        nom = self.getName()      
        while 1:
            msgClient = self.connexion.recv(1024)
            message = "%s> %s" % (nom, msgClient)
            print message  
 
        for cle in conn_client:
            if cle != nom:      
                conn_client[cle].send(message)
 
        self.connexion.close()      
        del conn_client[nom]        
        print "Client %s deconnecte." % nom
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    serveur = SocketServer.ThreadingTCPServer(('127.0.0.1',84), GestionnaireEcho)
except socket.error:
    print "La liaison du socket a l'adresse choisie a echoue."
    sys.exit()
 
print "En attente..!!!!"
conn_client = {}                
 
serveur.serve_forever()
 
     
     
[B]code client[/B]
 
# Definition d"un client reseau gerant en parallele l'emission
# et la reception des messages (utilisation de 2 THREADS).
 
host = '127.0.0.1'
port = 84
 
import socket, sys, threading
 
class ThreadReception(threading.Thread):
    """objet thread gerant la reception des messages"""
    def __init__(self, conn):
        threading.Thread.__init__(self)
        self.connexion = conn           # ref. du socket de connexion
         
    def run(self):
        while 1:
            message_recu = self.connexion.recv(1024)
            print "Ser>" + message_recu  
             
        # Le thread <reception> se termine ici.
        # On force la fermeture du thread <emission> :
 
        print "Client arrete. Connexion interrompue."
        self.connexion.close()
     
class ThreadEmission(threading.Thread):
     
    """objet thread gerant l'emission des messages"""
    def __init__(self, conn):
        threading.Thread.__init__(self)
        self.connexion = conn           # ref. du socket de connexion
         
    def run(self):
        message_final=""
        while 1:
            message_final=""
            message_emis = raw_input()
            message_final = message_final + " \n "+ message_emis
            self.connexion.send(message_final)
 
 
 
# Programme principal - etablissement de la connexion :
connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    connexion.connect((host, port))
except socket.error:
    print "La connexion a echoue."
    sys.exit()    
print "Connexion etablie avec le serveur."
             
# Dialogue avec le serveur : on lance deux threads pour gerer
# independamment l'emission et la reception des messages :
 
th_E = ThreadEmission(connexion)
th_R = ThreadReception(connexion)
th_E.start()
th_R.start()        
 
 
 

mood
Publicité
Posté le 25-03-2008 à 13:47:35  profilanswer
 

n°1707299
masklinn
í dag viðrar vel til loftárása
Posté le 25-03-2008 à 14:00:54  profilanswer
 

balise code.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1707356
tsic
Posté le 25-03-2008 à 14:30:55  profilanswer
 

Vous pouvez executer le code et vous verrai le resultat.
Pour le moment je ne peut pas mettre les belises du codes
Mais pour ceux qui connaissent le code de communication serveur client en python le trouverons facile à comprendre.

n°1707365
masklinn
í dag viðrar vel til loftárása
Posté le 25-03-2008 à 14:36:49  profilanswer
 

[:prozac]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1707465
Taz
bisounours-codeur
Posté le 25-03-2008 à 16:58:11  profilanswer
 

print "serveur"
 
de rien


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  multithread python

 

Sujets relatifs
PyCon FR - Journées PythonQuestions C++ : prog Linux/Windows, multitache/multithread
connexion serveur/client python[Python] Aide des programmmers python
[Résolu ]Opérateur de comparaison en python[Python] Conso CPU/Chargement Image
[C# .NET] Probleme client server multithreadéquivalent de trap(bash) en python ?
Lire le taux des cores du CPU (windows et linux) sous pythonPing python multithread
Plus de sujets relatifs à : multithread python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR