|
Le FTP avec la famille de fonction NetXxx() |
Iniciado por Mexance, 23,abr. 2017 04:12 - 8 respuestas |
| |
| | | |
|
| |
Miembro registrado 28 mensajes Popularité : +2 (2 votes) |
|
Publicado el 23,abril 2017 - 04:12 |
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
gnConnectFTP est un entier
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)
- Poste A = Client FTP
sLaListeIci est une chaîne = fListeFichier(SysRep(srAppDataCommun) + "\PICS\*.*", frNonRécursif) POUR TOUT CHAÎNE sUneImage de sLaListeIci SEPAREE PAR RC sIP est chaîne = "192.168.1.120" SI Ping(sIP) = Vrai ALORS nNumCnxFTP est entier = NetConnecte(sIP, ServeurFTP, "AERH", "123123000", Faux, INTRANET, 2001) SI nNumCnxFTP = -1 OU nNumCnxFTP = 0 ALORS Erreur(ErreurInfo(errComplet)) FIN SI nNumCnxFTP > 0 ALORS 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) 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
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 solutions. 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 et lui serai très reconnaissant, car je suis vraiment désespéré. Merci déjà pour vos réponses. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 199 mensajes Popularité : +14 (16 votes) |
|
Publicado el 23,abril 2017 - 13:07 |
Bonjour,
Pourquoi, vu que les postes sont sur le même réseau, ne pas simplement copier (via fcopie...) les fichiers dans un répertoire partagé ?
-- Bon développement
Pierre Devillers |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 28 mensajes Popularité : +2 (2 votes) |
|
Publicado el 23,abril 2017 - 18:43 |
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é. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 190 mensajes Popularité : +21 (23 votes) |
|
Publicado el 24,abril 2017 - 08:30 |
Bonjour
j'y connais pas grand chose en ftp mais il est possible qu'il y ait un délai de connexion entre 2 sessions pour des raisons de sécurité.
tu dis que ça coince lorsqu'il y a plusieurs images. Pourquoi faire une connexion / déconnexion pour chaque image?
Je ferais comme ceci: 1 - connexion 2 - transfert des images 3 - deconnexion |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.939 mensajes Popularité : +53 (65 votes) |
|
Publicado el 24,abril 2017 - 09:13 |
Bonjour,
Comme le dit Nicolas :
sIP est chaîne = "192.168.1.120" SI Ping(sIP) = Vrai ALORS nNumCnxFTP est entier = NetConnecte(sIP, ServeurFTP, "AERH", "123123000", Faux, INTRANET, 2001) SI nNumCnxFTP = 0 ALORS Erreur(ErreurInfo(errComplet)) SINON sLaListeIci est une chaîne = fListeFichier(SysRep(srAppDataCommun) + "\PICS\*.*", frNonRécursif) POUR TOUT CHAÎNE sUneImage de sLaListeIci SEPAREE PAR RC 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) FIN FIN FIN
PS : tu peux essayer le paramètre INTERNET à la place de INTRANET si la qualité de la communication entre les postes n'est pas bonne.
-- Bon dev, Jean-PierreMensaje modificado, 24,abril 2017 - 09:14 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 28 mensajes Popularité : +2 (2 votes) |
|
Publicado el 24,abril 2017 - 16:43 |
Bonjour, et merci beaucoup pour vos interventions Mon souci c'est que quelque soit ce que je fait, j'obtiens toujours une erreur. J'ai inséré des temporisations entre chaque envoie, de manière à ce qu'il ait du temps entre chaque transfert, mais ça n'a pas fonctionné. Le code que @Jean-Pierre à tapé, c'est le tout premier que j'avais fait, mais l'erreur qui me revenait était toujours celle-ci :
Et jusqu'à présent, cette erreur persiste Il dit que l'utilisateur et le mot de passe renseignés sont incorrects, pourtant, c'est bien avec ces identification qu'il a bien commencé le transfert, et ces identifiants sont corrects. |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,abril 2017 - 08:50 |
M.Deacon7 a exposé le 24/04/2017 :
Bonjour, et merci beaucoup pour vos interventions Mon souci c'est que quelque soit ce que je fait, j'obtiens toujours une erreur. J'ai inséré des temporisations entre chaque envoie, de manière à ce qu'il ait du temps entre chaque transfert, mais ça n'a pas fonctionné. Le code que @Jean-Pierre à tapé, c'est le tout premier que j'avais fait, mais l'erreur qui me revenait était toujours celle-ci :
Et jusqu'à présent, cette erreur persiste Il dit que l'utilisateur et le mot de passe renseignés sont incorrects, pourtant, c'est bien avec ces identification qu'il a bien commencé le transfert, et ces identifiants sont corrects.
basez-vous sur l'exemple livré en standard (client et serveur rpc)
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 940 mensajes Popularité : +66 (68 votes) |
|
Publicado el 25,abril 2017 - 09:29 |
bonjour,
comme l'indique Jean-Phi étudiez bien les fonctions FTP RPC de Windev, car les transferts s'exécutent en tâches de fond, et il ne peu y avoir qu'un seul transfert à la fois. dans votre code, le paramètre "Envoie en cours..." de NetEnvoieFichier n'est pas bon, windev s'attend à avoir un nom de message windows qui sera transmis et que vous devrez interceptez avec la fonction Evenement.
=> https://doc.pcsoft.fr/fr-FR/?3056010
( étape 2 )
Bon dèv |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 28 mensajes Popularité : +2 (2 votes) |
|
Publicado el 25,abril 2017 - 14:56 |
Bonjour Christophe. Merci beaucoup pour votre intervention.
Mais pouvez-vous m'aider à comprendre cette erreur s'il vous plaît ?
Et pourtant l'utilisateur et le mot de passe sont corrects, et le fichier WDRPCSRV.INI existe belle et bien sur le serveur. |
| |
| |
| | | |
|
| | | | |
| | |
|