IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Le FTP avec la famille de fonction NetXxx()


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Le FTP avec la famille de fonction NetXxx()
    Bonjour à tous.
    Je rencontre, depuis un bon bout de temps déjà, pas mal de problèmes au développement via WinDev d’une application de transfert d’images via le protocole FTP.
    En effet je souhaite transférer des images d’un poste A vers un poste B, tous deux étant dans le même réseau local (PAS SUR INTERNET). Pour cela, grâce à l’aide en ligne https://doc.pcsoft.fr/?3056010, j’ai créé deux applications :
    – Une application Client FTP pour le poste A (poste qui envoi les images)
    – Une application Serveur FTP pour le poste B (poste qui reçoit les images)

    Pour vous mettre dans le contexte, voici ce que j’ai fait sur chacun des postes :

    – Poste B = Serveur FTP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //------------------------------------------------------------------------------------------------
    gnConnectFTP est un entier	// Déclaration de la variable de démarage du serveur FTP
     
    // Création du fichier WDRPCSRV.INI contenant les droits de connexion de utilisateur AERH
    SI fFichierExiste(fRepExe() + "\WDRPCSRV.INI") = Faux ALORS
    	INIEcrit("Passwords", "AERH", "123123000", fRepExe() + "\WDRPCSRV.INI")
    SINON
    	fSupprime(fRepExe() + "\WDRPCSRV.INI")
    	INIEcrit("Passwords", "AERH", "123123000", fRepExe() + "\WDRPCSRV.INI")
    FIN
     
    gnConnectFTP = NetDémarreServeur(ServeurFTP, Faux, 2001)		// Démarage du serveur FTP
    //------------------------------------------------------------------------------------------------
    - Poste A = Client FTP

    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
     
    //------------------------------------------------------------------------------------------------
    sLaListeIci est une chaîne = fListeFichier(SysRep(srAppDataCommun) + "\PICS\*.*", frNonRécursif) // La liste des images sur le poste Client (Séparé par des RC)
    POUR TOUT CHAÎNE sUneImage DE sLaListeIci SEPAREE PAR RC	// Pour chacune des photos trouvé dans le dossier spécifié plus haut
    	sIP est chaîne = "192.168.1.120"	// On récuper l'adresse IP
    	SI Ping(sIP) = Vrai ALORS	// Si la machine concerné répond au PING, c'est qu'elle est en ligne et connecté à notre réseau
    		nNumCnxFTP est entier = NetConnecte(sIP, ServeurFTP, "AERH", "123123000", Faux, INTRANET, 2001)	// On se connecte à son server FTP
    		SI nNumCnxFTP = -1 OU nNumCnxFTP = 0 ALORS	// Si la connexion au serveur FTP échoue, on affiche l'erreur
    			Erreur(ErreurInfo(errComplet))
    		FIN
     
    		SI nNumCnxFTP > 0 ALORS		// Si parcontre  la connexion au serveur FTP réusssi...
    			SI NetEnvoieFichier(nNumCnxFTP, sUneImage, "/ProgramData/PICS/" + ExtraitChaîne(sUneImage, 1, "\", DepuisFin), "Envoie en cours.....", 100) = Faux ALORS
    				Erreur(ErreurInfo(errComplet))
    			FIN
    		FIN
    		NetDéconnecte(nNumCnxFTP)	// On se déconnecte de ce serveur pour cette image là. 
    	FIN
    FIN
    //------------------------------------------------------------------------------------------------
    En gros, rien de bien compliqué. Mais voilà, ce code fonctionne 1 fois sur 100, et de façon aléatoire, je reçois des messages d’erreur pas assez explicatifs.
    Dans mon dossier d'images, il n'y a pas de sous-dossiers, juste des images. J'ai bien ouverts tous les ports concernés dans mes pare-feux. Mais lorsque je lance le transfert, s'il y a plus de 2 images, le transfert échoue et me donne toutes les erreurs que j'ai posté en image plus bas.
    Pourtant mon dossier contient plus de 600 images, et qui chacune pèse au maximum 700 Ko, donc pas lourde

    Nom : 0.png
Affichages : 315
Taille : 19,8 Ko
    Nom : 1 a.png
Affichages : 302
Taille : 494,7 Ko
    Nom : 2 a.png
Affichages : 329
Taille : 455,2 Ko
    Nom : 3 a.png
Affichages : 294
Taille : 448,0 Ko
    Nom : 4a.png
Affichages : 307
Taille : 348,5 Ko

    Et lorsque j'utilise la famille de fonction FTPXxx() à la place de NetXxx(), j’obtiens une erreur me disant "Impossible de se connecter au serveur FTP"
    J'ai fais des recherches intensives sur le net, sans pour autant trouver de solution. J'ai essayé de modifier le code, insérer des temporisation, etc, j'ai beau lire et relire l'aide, mais rien ne fonctionne.
    Si quelqu’un a une solution pour moi, je suis très prenant, car à ce niveau, je suis désespéré.
    Merci déjà pour vos réponses.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Est-ce que depuis l'explorateur Windows, le transfert s'effectue sans soucis?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Le transfert ne se fait pas, car il me donne cette erreur
    Nom : 0.png
Affichages : 254
Taille : 19,8 Ko
    Il dit que l'utilisateur et le mot de passe renseignés sont incorrects, pourtant ces identifiants sont corrects, et existent dans le fichier WDRPCSRV.INI sur le serveur

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Ce que je ne comprends pas c'est la raison, pour chaque image, d'établir une connexion, de l'utiliser et de la refermer.

    Pourquoi ne pas établir la connexion avant la boucle Pour Tout et la refermer après cette boucle ?

    Je ne pense pas que ce soit la cause de l'erreur mais cela devrait optimiser les performances.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Vous ne m'avez pas répondu, l'image que vous montrez provient de votre programme, et non de windows : ouvrez l'explorateur windows, ainsi ensuite d'explorer le répertoire cible. Après avoir renseigné correctement les crédentials, est-ce que vous pouvez procéder à l'envoi de fichiers et/ou à la création d'un nouveau fichier (fichier texte, par exemple) ?

    Autre solution : ouvrez l'invit de commande Windows (Windows + R, puis saisissez cmd et cliquez ensuite sur le bouton ok), que se passe-t-il si vous exécutez la ligne de commande ?

    Si ces tests échouent, il se peut que les 2 PC aient un problème pour communiquer, ce problème doit être résolu en priorité

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    J'ai dû le faire ainsi parce que si je tente d'envoyer plusieurs images dans la même connexion, seule la première image (par ordre alphabétique) est toujours envoyé. C'est ainsi que j'ai donc décidé de faire une image par connexion. Je sais que c'est pas beau, mais ça m'a permis de transférer plus de 2 images. Mais maintenant quelque soit la méthode que j'utilise, je tombe toujours sur une erreur d'utilisateur et de mot de passe

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    Vous ne m'avez pas répondu, l'image que vous montrez provient de votre programme, et non de windows : ouvrez l'explorateur windows, ainsi ensuite d'explorer le répertoire cible. Après avoir renseigné correctement les crédentials, est-ce que vous pouvez procéder à l'envoi de fichiers et/ou à la création d'un nouveau fichier (fichier texte, par exemple) ?

    Autre solution : ouvrez l'invit de commande Windows (Windows + R, puis saisissez cmd et cliquez ensuite sur le bouton ok), que se passe-t-il si vous exécutez la ligne de commande ?

    Si ces tests échouent, il se peut que les 2 PC aient un problème pour communiquer, ce problème doit être résolu en priorité
    La communication entre les 2 postes est parfaite, le ping répond bien en CMD. Le dossier cible, depuis l'explorateur Windows n'est pas verrouillé, et donc permet bien la création et l'envoi de fichier. De même, les ports entres les 2 machine sont ouverts dans le pare-feu.

    De plus, si vous voyez dans mon code, le transfert ne se fait que si le ping répond.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    Si ces tests échouent, il se peut que les 2 PC aient un problème pour communiquer, ce problème doit être résolu en priorité
    Dans la manipulation de fichiers windows en programmation, la 1ere chose à vérifier, c'est de vérifier la faisabilité d'un projet depuis l'explorateur windows.

    Après, ce qui peut être fait, c'est depuis le poste cible, de partager le dossier avec le poste qui fait l'envoie, ainsi, en wlangage, un appel de fCopieFichier pour le transfert suffira.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    Dans la manipulation de fichiers windows en programmation, la 1ere chose à vérifier, c'est de vérifier la faisabilité d'un projet depuis l'explorateur windows.

    Après, ce qui peut être fait, c'est depuis le poste cible, de partager le dossier avec le poste qui fait l'envoie, ainsi, en wlangage, un appel de fCopieFichier pour le transfert suffira.

    J'ai également pensé à ça. Malheureusement le problème avec la fonction fCopieFichier, c'est qu'il faut justement qu'au préalable :
    1/- Le répertoire de destination sur le poste serveur soit partagé
    2/- L'utilisateur Windows sur le poste client ait les droits en Lecture/Ecriture sur le répertoire partagé du poste serveur

    Or chez mon client je n'ai pas envie d'intervenir physiquement sur les postes pour modifier quoi que ce soit moi-même.
    J'ai donc cherché sur longtemps sur internet comment faire ces deux choses (1/- et 2/-) par programmation, mais j'ai rien trouvé. D'où je passe par du FTP

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/08/2011, 19h24
  2. transfert ftp avec le composant
    Par sillycoder dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/05/2005, 09h35
  3. [Indy 10] Serveur FTP avec SSL
    Par KarMa_CoMa dans le forum Web & réseau
    Réponses: 5
    Dernier message: 21/04/2005, 09h51
  4. lister le contenu d'un serveur ftp avec NMFTP
    Par jackson dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/02/2005, 17h42
  5. Problème avec les touches CTRL & FONCTIONS
    Par bidule999 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 03/12/2004, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo