RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 multithread serveur python

Forum : PYTHON
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ PYTHON

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM PYTHON

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
tsic
Nouveau membre
Avatar de tsic
Inscrit : 03/03/2008
Messages : 13
Message
#151108
Posté le 25/03/08 à 13:35
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()

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.