FTP avec Winsock

Le
christ
Bonjour,

Suite à mes déboires avec Inet, je cherche à envoyer des fichiers en boucle
en FTP via Winsock.

Je parviens à envoyer un fichier, mais invariablement le deuxième j'obtiens
une 425 can't open data connection.

Lors de l'envoi du premier fichier, j'ai pour réponse du serveur :

à la connexion
j'envoi PASV
Réponse 227

Je récupère et calcul le port attribué par le serveur. Je transfome le
fichier à envoyer en fichier Binaire.

Open ftpFichier For Binary Access Read Lock Read Write As #1
StrBuffer = Input(LOF(1), #1)
Close #1
SckUp.Connect ChemFTP, Port ' Connxion auserveur via le port attribué
SckFtp.SendData "STOR " & chemDestination & "/" & fichier1 & vbCrLf '
Signal que je veux envoyer un fichier

Le serveur répond 150 connection accepted
j'envoi SckUp.sendData strBuffer & vbcrlf

Réponse 226 transfert OK
Je ferme SckUp.close
J'envoi sckFTP.sendData "" & vbcrlf
ce qui a pour effet d'envoyer "TYPE I" ??

Le serveur envoi 200 type set to I
J'envoi sckFTP.sendData "PORT ip.portServeur.portServeur+1 ' j'ai essayé en
gardant le même port le résultat est identique

200 port command successful
SckUp.Connect ChemFTP, Port ' Connexion au serveur via le nouveau port
J'envoi SckFTP.sendData "STOR " & chemDestination & "/" & fichier2 & vbCrLf

Réponse 150 opening data channel for file
Lorsque j'envoi le fichier sckUp.SendData strBuffer & vbcrlf

J'obtiens le message d'erreur précédemment citer (425 can't open data
connection sur le serveur. Sinon vb m'envoi l'erreur 40006 Wrong protocol or
connection state for the requested

Qu'est-ce qui cloche ?

Christian.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #15358071
Bonjour christ,
christ a écrit :
Bonjour,

Suite à mes déboires avec Inet, je cherche à envoyer des fichiers en boucle
en FTP via Winsock.

Je parviens à envoyer un fichier, mais invariablement le deuxième j'obtiens
une 425 can't open data connection.

Lors de l'envoi du premier fichier, j'ai pour réponse du serveur :

à la connexion
j'envoi PASV
Réponse 227

Je récupère et calcul le port attribué par le serveur. Je transfome le
fichier à envoyer en fichier Binaire.

Open ftpFichier For Binary Access Read Lock Read Write As #1
StrBuffer = Input(LOF(1), #1)
Close #1
SckUp.Connect ChemFTP, Port ' Connxion auserveur via le port attribué
SckFtp.SendData "STOR " & chemDestination & "/" & fichier1 & vbCrLf '
Signal que je veux envoyer un fichier

Le serveur répond 150 connection accepted
j'envoi SckUp.sendData strBuffer & vbcrlf

Réponse 226 transfert OK
Je ferme SckUp.close
J'envoi sckFTP.sendData "" & vbcrlf
ce qui a pour effet d'envoyer "TYPE I" ??

Le serveur envoi 200 type set to I
J'envoi sckFTP.sendData "PORT ip.portServeur.portServeur+1 ' j'ai essayé en
gardant le même port le résultat est identique

200 port command successful
SckUp.Connect ChemFTP, Port ' Connexion au serveur via le nouveau port
J'envoi SckFTP.sendData "STOR " & chemDestination & "/" & fichier2 & vbCrLf

Réponse 150 opening data channel for file
Lorsque j'envoi le fichier sckUp.SendData strBuffer & vbcrlf

J'obtiens le message d'erreur précédemment citer (425 can't open data
connection sur le serveur. Sinon vb m'envoi l'erreur 40006 Wrong protocol or
connection state for the requested ...

Qu'est-ce qui cloche ?

Christian.





Je ne peux pas vérifier, mais comme tu travailles en mode passif, soit
tu gardes le port de données indiqué par le serveur ouvert, soit tu en
ré-ouvre un pour chaque fichier à transmettre (pasv, connect, etc..)

Par ailleurs, tu peux connaitre l'état du port en tapant dans une invite
de commande :

netstat -n -p tcp

si le status est 'TIME-WAIT', cela correspondrait à:


--

Cordialement,

Jacques.
Jean-marc
Le #15358021
christ wrote:
Bonjour,

Suite à mes déboires avec Inet, je cherche à envoyer des fichiers en
boucle en FTP via Winsock.




Hello,

j'ai fait il y a longtemps un petit truc comme ça.
Le code source et tout et tout est ici:
http://users.skynet.be/candide/jmn/client-ftp.zip

Le code est assez clair et implémente le protocole de façon
assez complète. En tout cas, ça fonctionne très bien pour faire
des tests.
Bien sur ce n'est qu'un truc de test, pas adapté pour envoyer de
gros fichiers. Il faudrait pour cela un FileReader adaptatif que
je n'avais pas codé dans ce petit programme exercice.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
christ
Le #15357911
"Jean-marc" 48331777$0$2989$
christ wrote:
Bonjour,

Suite à mes déboires avec Inet, je cherche à envoyer des fichiers en
boucle en FTP via Winsock.




Hello,

j'ai fait il y a longtemps un petit truc comme ça.
Le code source et tout et tout est ici:
http://users.skynet.be/candide/jmn/client-ftp.zip

Le code est assez clair et implémente le protocole de façon
assez complète. En tout cas, ça fonctionne très bien pour faire
des tests.
Bien sur ce n'est qu'un truc de test, pas adapté pour envoyer de
gros fichiers. Il faudrait pour cela un FileReader adaptatif que
je n'avais pas codé dans ce petit programme exercice.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Merci pour vos interventions. J'ai vraiment de quoi faire grâce à vos post.
Je crois que j'y suis presque. Il me reste le teste ultime du déploiement...
En tous les cas, un grand merci.

Christian.
Publicité
Poster une réponse
Anonyme