Example #1
0
        /// <summary>
        ///		Transfiere a modo pasivo (PASV)
        /// </summary>
        private bool TransferPassiveMode(FtpConnection connection, ref string host, ref int port)
        {
            bool passive = false;

            // Intenta pasar a modo pasivo
            for (int loops = 0; !passive && loops < 5; loops++)
            {
                Commands.Streams.FtpChangePassiveCommand command;
                FtpReply reply;

                // Envía el comando y obtiene la respuesta
                command = new Commands.Streams.FtpChangePassiveCommand(connection, false);
                reply   = command.Send();
                // Si se encuentra el código 227, recoge el host y puerto, si no, lo intenta de nuevo (puede haber dado un
                // error del tipo "421 - Demasiadas conexiones abiertas")
                if (reply.Code == 227)
                {
                    host    = command.Host;
                    port    = command.Port;
                    passive = command.IsPassive;
                }
            }
            // Devuelve el valor que indica si ha podido pasar a modo pasivo
            return(passive);
        }
Example #2
0
        /// <summary>
        ///		Transfiere a modo pasivo (EPSV)
        /// </summary>
        private bool TransferExtendedPassiveMode(FtpConnection connection, ref string host, ref int port)
        {
            bool passive = false;

            // Intenta pasar a modo pasivo
            for (int loops = 0; !passive && loops < 5; loops++)
            {
                FtpReply reply;
                Commands.Streams.FtpChangePassiveCommand command;

                // Envía el comando
                command = new Commands.Streams.FtpChangePassiveCommand(connection, true);
                reply   = command.Send();
                // Si responde con código 229, recoge el puerto, si no, lo intenta de nuevo (puede haber dado
                // un error de tipo "421 - Demasiadas conexiones abiertas")
                if (reply.Code == 229)
                {
                    host    = command.Host;
                    port    = command.Port;
                    passive = command.IsPassive;
                }
            }
            // Devuelve el valor que indica si se ha podido pasar a modo pasivo
            return(passive);
        }