Bonjour,
aidez moi SVP c très urgent.
J'etouffe
Donc voilà mon code je veux que lorsque le client envoie une cmd existante dans le tableau le serveur lui repond la reponse qui est mise à la case l[i+1] de la case de reponse située dans l[i]. Je ne sais pas pourquoi quand je tape la chaine il me répond tjs le message écrit dans l'exception. les fichies seront à votre disposition.
Vous pouvez les tester sous dos.
le fichier c:\python25\benj.txt voilà son contenu:
le fichier serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 jj#oo bg#cd azerty#qwerty bs#bn
le fichier client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 from socket import * import socket, sys, threading import SocketServer import time import locale class tel(): print "recopier un fichier en eliminant les lignes de remarques" fs = open("benj.txt","r") l=[] for ligne in file("benj.txt"): i=0 c1="" c2="" while i<len(ligne) and ligne[i]!="#": c1=c1+ligne[i] i=i+1 i=i+1 while i<(len(ligne)): c2=c2+ligne[i] i=i+1 l.append(c1) l.append(c2.strip()) fs.close() print l class GestionnaireEcho(SocketServer.BaseRequestHandler): def handle(self): 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 dr=str(donneesRecues) try: ind=l.index(dr) print ind msg= str(l[ind+1]) except: msg="commande erronee" self.request.send(msg) print "Deconnexion de ", self.client_address mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tel() 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()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 # 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()
Merci
Partager