[python] probleme de comparaison entre chaine

[Résolu/Fermé]
Signaler
Messages postés
20
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
20 juin 2008
-
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
-
Bonjour,
voilà mon code serveur, je veux comparer la chaine envoyer par le client par rapport à la liste l.
j'ai fait plusieurs affichages pour enfin découvrir que l'erreur c'est au niveau de la comparaison
ch==donneesRecues
la "==" ne fonctionne pas
j'utilise eric 4
Donc é c qu'il ya une autre methode pour faire cette comparaison

from socket import *
import socket, sys, threading
import SocketServer
import time
import locale



class GestionnaireEcho(SocketServer.BaseRequestHandler):
    def __init__(self, request, client_address, server):
        
        self.l = []
        for ligne in open('benj.txt'):
            for commande in ligne.split('#'):
                self.l.append(commande.strip())
        print self.l   
        SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)


    def handle(self):
        print "la liste est:"
        print self.l
        locale.setlocale(locale.LC_ALL,'')
        c= time.strftime('%A %c')
        print "Connexion de ", self.client_address,c
        while True:
            donneesRecues = self.request.recv(8192)
            t=time.strftime("%H:%M:%S")
            print "\n C ",t, "> ", donneesRecues
            ch=""
            dr=""
            for ch in self.l:
                print "ch= ", ch
                print "donnees recues = ",donneesRecues 
                if ch == donneesRecues :
                    dr=self.l[self.l.index(ch)+1]
                    
            if donneesRecues==self.l[0]:
                print "egalite, la reponse est: ", self.l[1]
            print "dr est = %s"%(dr)
            if len(dr)==0:
                msg="commande erronee"
            else:
                msg=dr
            
            self.request.send(msg)
            
        print "Deconnexion de ", self.client_address


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..!!!!"
   

serveur.serve_forever()

    



mercii

2 réponses

Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 593
Tu as vérifié que donneesRecues ne contenaient pas d'autres caractères, comme un retour à la ligne ?

Dans ce cas, essaie:
if ch.strip() == donneesRecues.strip() :
6
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
20
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
20 juin 2008

Salut,
Vraiment vous etes genial.Comment vous l'avez su? Je n'aurais jamais l'idee de penser à ça. ça a marché.
MERCIIIIIII
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 593
De rien :-)

Je met le problème en "résolu". Penses à le faire toi-même la prochaine fois.