[python] probleme de comparaison entre chaine

Résolu/Fermé
tsic Messages postés 20 Date d'inscription jeudi 7 février 2008 Statut Membre Dernière intervention 20 juin 2008 - 7 avril 2008 à 10:54
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 7 avril 2008 à 13:16
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
A voir également:

2 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
7 avril 2008 à 12:25
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
tsic Messages postés 20 Date d'inscription jeudi 7 février 2008 Statut Membre Dernière intervention 20 juin 2008
7 avril 2008 à 13:01
Salut,
Vraiment vous etes genial.Comment vous l'avez su? Je n'aurais jamais l'idee de penser à ça. ça a marché.
MERCIIIIIII
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
7 avril 2008 à 13:16
De rien :-)

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