Rechercher : dans
Par :

Multithread serveur python

Dernière réponse le 27 jun 2008 à 18:41:05 tsic, le 25 mar 2008 à 14:31:49 
 Signaler ce message aux modérateurs

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()

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « multithread serveur python » dans :
Adresses des serveurs POP et SMTP des principaux FAI VoirCette page donne les adresses des serveurs de messagerie (SMTP / POP3 / IMAP) des principaux fournisseurs d'accès à internet (FAI) : 9 Telecom 9ONLINE ALICE AOL ALTERN.ORG CARAMAIL CEGETEL CLUB INTERNET DARTY BOX (DARTYBOX) ESTVIDEO...
Serveurs DNS des principaux FAI VoirLa liste ci-dessous donne les adresses IP des serveurs de noms (DNS) des principaux fournisseurs d'accès à Internet (FAI) : 9 Telecom / 9Online Alice ADSL AOL Belgacom / SkyNet Bluewin.ch Bouygues BBOX Cégétel Chello Club-internet Colt...
Installer un serveur FTP sous Windows VoirVersion rapide Version un peu moins rapide (mais plus propre) Version serveur propre Liens Pour aller plus loin : Accédez à votre serveur FTP n'importe où dans le monde Notes Version rapide VITE, JE VEUX INSTALLER UN SERVEUR FTP TOUT...
Serveurs proxy (serveurs mandataires) et reverse proxy VoirProxy Un serveur proxy (traduction française de «proxy server», appelé aussi «serveur mandataire») est à l'origine une machine faisant fonction d'intermédiaire entre les ordinateurs d'un réseau local (utilisant parfois des protocoles autres que le...
Installation d'un serveur Web sous Linux (Apache, PHP et MySQL) VoirIntroduction Un serveur web est un logiciel permettant de rendre accessibles à de nombreux ordinateurs (les clients) des pages web stockées sur le disque. Cette fiche pratique explique comment installer le serveur web Apache sur un système de type...
Configuration d'un serveur d'un réseau TCP/IP sous Linux VoirIntroduction Dans cette partie , nous allons décrire toutes les étapes nécessaires pour configurer votre réseau TCP/IP sur votre serveur. Tout d'abord, nous verrons les types d'adressage IP, ensuite, nous configurerons vos interfaces réseaux et...

1

 BoBoXx, le 27 jun 2008 à 18:41:05

Pour afficher le thread :

print nom, message

Répondre à BoBoXx