Bonjour,
j'ai un code serveur/ plusieurs clients qui se communiquent.
Le probleme que le serveur lorsque plusieurs client se connectent à lui, il envoy ces reponses au dernier connecté.
Donc j'ai pensé qu'à chaque connexion d'un nouvel client j'ouvre une nouvelle fenetre DOS.
j'ai pas trouvé la commande necessaire.
Donc SVP aidez moi.
si quelqu'un a une meilleur idee je serai reconnaissante
Euh... tu veux ouvrir une nouvelle fenêtre de quoi lors de la connexion de chaque client ?
Ne serait-il pas préférable de faire du multithread ?
__________________________
Aidez les autres membres en publiant sur le forum le code que nous vous avons aidé à créer ! Où sont les membres de MP ?
from socket import *
import socket, sys, threading
class ThreadServeur(threading.Thread):
def __init__(self, conn):
threading.Thread.__init__(self)
self.connexion = conn
def run(self):
while 1:
msgServeur = raw_input("S> ")
connexion.send(msgServeur)
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:
mySocket.bind(('127.0.0.1', 84))
except socket.error:
print "La liaison du socket a l'adresse choisie a echoue."
sys.exit()
print "En attente..!!!!"
mySocket.listen(5)
conn_client = {}
while 1:
connexion, adresse = mySocket.accept()
th = ThreadClient(connexion)
ths=ThreadServeur(connexion)
th.start()
it = th.getName()
conn_client[it] = connexion
print "Client %s connecte, adresse IP %s, port %s." %\
(it, adresse[0], adresse[1])
connexion.send("Vous etes connecte. Envoyez vos messages.")
ths.start()
Si c'est un probleme de multithread SVP dite moi qu'est ce que je doit ajouter à mon code car je suis encore débutante pour ce langage.
Merci pour votre aide.
Balises de code stp ... sinon l'indentation passe mal
(je me charge de modifier ton message cette fois-ci)
__________________________
Aidez les autres membres en publiant sur le forum le code que nous vous avons aidé à créer ! Où sont les membres de MP ?
Okay... donc ce que tu veux, c'est plusieurs terminaux pour envoyer des données (type chat) à différents clients en passant par la fonction raw_input().
Tu as deux solutions: soit lancer plusieurs programmes, chacun ayant son terminal, soit utiliser une Graphical User Interface (GUI) et créer des fenêtres.
Dans le premier cas, je te conseille une architecture client-serveur différente, avec un seul serveur (pouvant tourner en tâche de fond) et des clients pour l'affichage.
clients localhost <-> serveur <-> clients du réseau
Dans le second cas, tu peux trouver pas mal de doc sur des GUI portables, comme Qt, GTK, wxPython et Tkinter .
__________________________
Aidez les autres membres en publiant sur le forum le code que nous vous avons aidé à créer ! Où sont les membres de MP ?
Donc c'est ça. Dans mon projet je vais utiliser les interfaces et mon encadreur me demande d'utiliser QT Designer v4;
J'ai eu des problèmes avec donc je me suis chargée de s'occuper du code puis du designer. Mais si vous voyez que le passage vers l'interface maintenant est une etape necessaire pour régler le probleme de communication, donc je doit le faire. sinon je continuerai avec le DOS jusqu'à s'assurer que le code n'a aucun mal.
merciiiiiii d'eclaircir plus les choses
Je pense que tu n'as pas vraiment d'autre choix que de passer à l'interface graphique (GUI)(QT dans ton cas).
Le code du multithread que tu as posté plus haut me semble à première vue correct, mais il faudra bien entendu l'adapter à la GUI.
__________________________
Aidez les autres membres en publiant sur le forum le code que nous vous avons aidé à créer ! Où sont les membres de MP ?