/// <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); }
/// <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); }