FTP : 227 Entering Passive Mode et après ??

Zayann Messages postés 75 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 15 juillet 2015 - Modifié par Whismeril le 13/07/2015 à 14:23
Zayann Messages postés 75 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 15 juillet 2015 - 15 juil. 2015 à 11:35
Bonjour,

C'est chouette on a le bonjour automatique :-)


J'ai une petite question concernant mon client FTP, en VB.Net 2010.
Je me connecte au server sans problème mais quand celui-ci me répond le message "mode passif" (227 Entering Passive Mode), que faire par la suite.
Je n'arrive pas à comprendre comment faire pour ensuite télécharger le pauvre fichier texte que je dois rapatrier en local.

Help
Merci

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 13/07/2015 à 16:45
Bonjour,
Tu ne parviendras pas à continuer en mode passif.
Le mode passif est le mode par défaut de l'objet webrequest (i est à true par défaut)
Foce-lui la main en me mettant à False.
Lis cette discussion (en italien, mais aisément compréhensible)

http://forum.masterdrive.it/visual-basic-net-18/upload-file-via-ftp-in-passive-mode-38644/

Le demandeur expose la solution qu'il a lui-même trouvée

Dim ftpConn As FtpWebRequest = WebRequest.Create(Server)
ftpConn.UsePassive = False '============>>> ici

.......
--
___________
_____________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Zayann Messages postés 75 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par Zayann le 13/07/2015 à 21:40
Merci.
Mais en l'occurrence je souhaite continuer en mode passif.
J'ai un peu avancé et après le passage en mode passif j'essaye de télécharger mon fichier mais j'ai un message d'erreur: "550 Version.txt: Permission deny"
Par contre si je met le dossier dans lequel est ce fichier en dossier actif et qu'ensuite j'essaye de le télécharger, j'ai une erreur "425".

Bon là je sèche...

Je vais tenter autre chose...
0
Zayann Messages postés 75 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par Zayann le 13/07/2015 à 21:38
Voilà le code qui pose problème :
      'Create the ClientFTP object
        Dim ips As IPAddress()
        ips = Dns.GetHostAddresses("Mon.hostname")
         FTPSettings.IP = ips(0).ToString
        FTPSettings.UserID = "MonUserName"
        FTPSettings.Password = "MonPW"
        Dim reqFTP As FtpWebRequest = Nothing
        Dim ftpStream As Stream = Nothing
        Try

         
            Dim message As String = TB_FTPStatus.Text
            MsgBox(message, MsgBoxStyle.Information)
            Dim outputStream As New FileStream(Directory.GetCurrentDirectory + "\Version.txt", FileMode.Create)
            reqFTP = DirectCast(FtpWebRequest.Create(New Uri("ftp://192.168.1.12" + "/" + "Mondossier/Version.txt")), FtpWebRequest)
            '             reqFTP = DirectCast(FtpWebRequest.Create(New Uri("ftp://" +  FTPSettings.IP + "/" + "Mondossier/Version.txt")), FtpWebRequest)
            reqFTP.Method = WebRequestMethods.Ftp.DownloadFile
            reqFTP.UseBinary = False

            reqFTP.UsePassive = False
            reqFTP.Credentials = New NetworkCredential(FTPSettings.UserID, FTPSettings.Password)
            Dim response As FtpWebResponse = DirectCast(reqFTP.GetResponse(), FtpWebResponse)
            ftpStream = response.GetResponseStream()
            Dim cl As Long = response.ContentLength
            Dim bufferSize As Integer = 2048
            Dim readCount As Integer
            Dim buffer As Byte() = New Byte(bufferSize - 1) {}

            readCount = ftpStream.Read(buffer, 0, bufferSize)
            While readCount > 0
                outputStream.Write(buffer, 0, readCount)
                readCount = ftpStream.Read(buffer, 0, bufferSize)
            End While

        
        Catch ex As Exception
          
            Throw New Exception(ex.Message.ToString())
            '   MsgBox(ex.ToString, MsgBoxStyle.Critical)
        Finally

            ftpStream.Close()
            outputStream.Close()
            response.Close()
        End Try



Chez moi, sans avoir entré de ligne dans le fichier Host ça ne fonctionne pas sans l'adresse local (à cause du loopback - normal)
Avec l'adresse IP local : RAS ça fonctionne bien.

Au boulot par contre ça ne marche pas.
0
Zayann Messages postés 75 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 15 juillet 2015 1
15 juil. 2015 à 11:35
Bon alors au boulot
En mode actif : erreur "Le serveur distant a retourné une erreur : (500) Erreur de syntaxe, commande non reconnue."
En mode passif : "Le serveur distant a retourné une erreur : 227 Entering Passive Mode (XX,XX,XX,XX,216,241)"



--
0
Rejoignez-nous