[Ayuda]Conexion FTP mediante C/C++

      • 23
      • mensajes
      • miembro desde
      • 05/01/11
    #1 [Ayuda]Conexion FTP mediante C/C++

    Hola. Que tal?
    Vengo con un problema que me surgio a ultima hora terminando de programar una aplicacion que requiere una conexion FTP a un host para subir un archivo. El tema es que me he matado con Sockets en C para lograrlo.
    El problema es que yo la conexion la realizo por medio de Sockets enviando mediante el comando "send" los comandos ftp. Y cuando llego a la parte de subir el archivo me trabo, lo que yo hago es conextar mi aplicacion a un host FTP, registrarme con login y password, enviar el comando "stor archivo.txt" y luego el comando pasv para que el servidor me de una ip y un puerto, mediante el que me conecto para subir el archivo. O sea, tengo que realizar 2 conexiones, una para registrarme y pasar el nombre del archivo que deseo subir y otra que es la conexion DATA para enviar el archivo.

    Mediante la shell y telnet seria asi:
    telnet servidor.ftp.com 21
    user miuser
    pass mipassword
    pwd
    stor archivo.txt
    pasv

    (aqui me da la ip y el puerto al que me tengo que conectar)
    Luego mediante otra conexion aparte para pasar el archivo:
    telnet 222.562.112.125 2256 < archivo.txt (la ip y el puerto que me paso anteriormente con PASV y el archivo se lo paso mediante un flujo, lo que quisiera saber es como hacer esto en C/C++ con el comando "send" y creo que para hacer esto deberia trabajar con ficheros con stdio.h)

    Muchisimas gracias de antemano!

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    3 comentarios / 4185 Visitas

      • 367
      • mensajes
      • miembro desde
      • 21/10/09
    21/01/2011
    #2 Re: [Ayuda]Conexion FTP mediante C/C++

    Hola amigo ya me olvide de todo lo que habia estudiado de c,c++ en la secundaria pero buscando encontre esto espero que te ayude Registrarse Inicia sesión
    Saludos y suerte!

      • 2,110
      • mensajes
      • miembro desde
      • 22/01/05
    22/01/2011
    #3 Re: [Ayuda]Conexion FTP mediante C/C++

    Hola, basicamente lo que necesitás es crear un buffer intermedio donde guardar partes del archivo, luego leés en ese buffer y enviás con send, luego leés otra parte y así...
    Eso se puede hacer tanto con la funcionalidad de stdio.h (que es C puro) como con fstream.h (C++).

    En C++ sería algo así para que te des una idea:

    Código:
    char buffer[ 4096 ];
    ifstream entrada( "archivo" );
    
    while( !entrada.eof() ) {
       entrada.read( buffer, sizeof( buffer ) );
       streamsize bytesLeidos = entrada.gcount();
       if (bytesLeidos > 0 )
          send( fd, buffer, bytesLeidos, 0 );
    }
    en C sería algo como:

    Código:
    char buffer[ 4096 ];
    FILE *entrada = fopen ( "archivo", "rb" );
    while ( !feof( entrada ) ) {
       size_t bytesLeidos = fread( buffer, 1, sizeof( buffer ), entrada );
       if ( bytesLeidos > 0 )
          send( fd, buffer, bytesLeidos, 0 );
    }
    Y si estás programando en linux (o algún unix) podés usar directamente la función sendfile.

    * Registrarse Inicia sesión
    * Registrarse Inicia sesión

    ¡Saludos!
      • 23
      • mensajes
      • miembro desde
      • 05/01/11
    23/01/2011
    #4 Re: [Ayuda]Conexion FTP mediante C/C++

    Muchas gracias!! Es justo a lo que me referia. Utilizar la libreria stdio.h para leer un fichero y enviar el buffer. Pero tenía todo revuelto, jeje. Con esto se me aclaro. Gracias!

IR ARRIBA