Bonjour a tous,j'ai actuellement un programme en python fonctionnant avec des sockets, qui me permet d'envoyer et recevoir des fichiers, j'ai reussi a faire en sorte que mon serveur soit toujours actif pour recevoir en chaine des fichiers, cependant mon client lui s'arrete apres le 1er envoie et je ne sais pas comment résoudre ce probleme, voici mes 2 codes:
serveur
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 #!/usr/bin/env python # -*- coding: utf*-8 *-*- import time, socket, os socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print " >> Creation du serveur" socket.bind(("0.0.0.0", 2110)) socket.listen(1) def envoie(socket): print " >> Attente d'une nouvelle connexion..." conn, adresse = socket.accept() print "" print " >> Vous etes connecte avec : " + adresse[0] print "" accepte = "non" num = 0 pourcent = 0 while (conn.connect): recu = "" recu = conn.recv(1024) if not recu : break if accepte == "non": nomFich = recu.split("NAME ")[1] nomFich = nomFich.split("OCTETS ")[0] taille = recu.split("OCTETS ")[1] print " >> Fichier '" + nomFich + "' [" + taille + " Ko]" accepte = 'o' if accepte == "o" or accepte == "oui": conn.send("GO") print time.strftime(" >> [%H:%M] transfert en cours veuillez patienter...") print "" f = open(nomFich, "wb") identifier = "oui" taille = int(taille) * 1024 elif recu == "cya": print "" print time.strftime(" >> transfert termine !") else: f.write(recu) if taille > 1024: num = num + 1024 envoie(socket) envoie(socket)
Apres avoir testé pleins de solutions différentes, je reste quand même bloqué sur ce probleme.
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
70
71
72
73 #!/usr/bin/env python # -*- coding: utf*-8 *-*- import time, socket, os socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) nomFich = "file.py" host = "address" print " >> Connexion en cours avec " + host + "..." try: socket.connect((host, 2110)) except: print " >> le serveur '" + host + "' est introuvable." time.sleep(2) exit() print "" print " >> Vous etes connecte au serveur, patientez d'une reponse..." print "" def envoie(nomFich): if nomFich != "": try: fich = open(nomFich, "rb") fich.close() except: print " >> le fichier '" + nomFich + "' est introuvable." time.sleep(2) exit() octets = os.path.getsize(nomFich) / 1024 print " >> OK : '" + nomFich + "' [" + str(octets) + " Ko]" print "" socket.send("NAME " + nomFich + "OCTETS " + str(octets)) while (socket.connect): recu = socket.recv(1024) if not recu : break if recu == "GO": print " >> Le serveur accepte le transfert" print time.strftime(" >> [%H:%M] transfert en cours veuillez patienter...") print " " num = 0 pourcent = 0 octets = octets * 1024 fich = open(nomFich, "rb") if octets > 1024: for i in range(octets / 1024): fich.seek(num, 0) donnees = fich.read(1024) socket.send(donnees) num = num + 1024 else: donnees = fich.read() socket.send(donnees) fich.close() print "" print time.strftime(" >> transfert termine !") socket.send("cya") time.sleep(1) envoie(nomFich) envoie(nomFich)
Merci d'avance.
Partager