elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [SOURCE] Como subir fichero a un FTP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE] Como subir fichero a un FTP  (Leído 1,062 veces)
Shrick

Desconectado Desconectado

Mensajes: 259


Yo no se nada, sino ¿porque pregunto?


Ver Perfil
[SOURCE] Como subir fichero a un FTP
« en: 12 Enero 2009, 00:17 »

LIBRERIAS EXTRA:


La Boost podria considerarse estándar de hecho en la proxima versión de C++ algunas lo seran.
Intente usar la pthreads pero no me lleve bien con ellas :-( :-( . De todas formas las dos librerias son compatibles en todo SO.

Compatibility
libsocket has been tested and found to work ok under :

    * GNU/Linux (gcc 2.95 and 3.x)
    * NetBSD
    * OpenBSD
    * FreeBSD
    * Solaris
    * Cygwin
    * Windows native with mingw32
    * Windows native with MSVC 6.0

main.cpp
Código
  1. #include <iostream>
  2. #include <fstream>
  3. //#include <string>
  4. #include <happycoders/socket/tcpsocket.hh>
  5. #include <boost/thread.hpp>
  6. //#include <pthread.h>
  7.  
  8. using namespace std;
  9.  
  10. void FTPDATA();
  11. int tratamiento_comando(string);
  12.  
  13. int puerto;
  14.  
  15. int main()
  16. {
  17.    Network::TcpSocket FTP_SOCK; // Creamos el objeto socket de la libreria de Happycoders
  18.    string Buffer, comando;
  19.  
  20.    FTP_SOCK.connect("ftp.webcindario.com", 21);
  21.    FTP_SOCK.add_delim("\n");
  22.    FTP_SOCK >> Buffer;
  23.    cout << Buffer << endl;
  24.    FTP_SOCK >> Buffer;
  25.    cout << Buffer << endl;
  26.    FTP_SOCK >> Buffer;
  27.    cout << Buffer << endl; // Esto se tiene que ajustar a las lineas que recibas del server, en Mi@ son necesarias 5
  28.    FTP_SOCK >> Buffer;
  29.    cout << Buffer << endl;
  30.    FTP_SOCK >> Buffer;
  31.    cout << Buffer << endl;
  32.    FTP_SOCK << "USER usuario\n"; // Usuario
  33.    cout << "USER usuario" << endl;
  34.    FTP_SOCK >> Buffer;
  35.    cout << Buffer << endl;
  36.    FTP_SOCK << "PASS contraseña\n"; // Contraseña sin cifrar
  37.    cout << "PASS ******" << endl;
  38.    FTP_SOCK >> Buffer;
  39.    cout << Buffer << endl;
  40.    FTP_SOCK >> Buffer;
  41.    cout << Buffer << endl;
  42.    FTP_SOCK << "SYST\n";
  43.    cout << "SYST" << endl;
  44.    FTP_SOCK >> Buffer;
  45.    cout << Buffer << endl;
  46.    FTP_SOCK << "CWD /\n";
  47.    cout << "CWD /" << endl;
  48.    FTP_SOCK >> Buffer;
  49.    cout << Buffer << endl;
  50.    FTP_SOCK << "PWD\n";
  51.    cout << "PWD" << endl;
  52.    FTP_SOCK >> Buffer;
  53.    cout << Buffer << endl;
  54.    FTP_SOCK << "TYPE I\n";
  55.    cout << "TYPE I" << endl;
  56.    FTP_SOCK >> Buffer;
  57.    cout << Buffer << endl;
  58.    FTP_SOCK << "PASV\n"; // Entramos en modo pasivo dandonos IP y Puerto
  59.    cout << "PASV" << endl;
  60.    FTP_SOCK >> Buffer;
  61.    cout << Buffer << endl;
  62.    comando = Buffer;
  63.    //comando = "192,168,1,33,162,24";
  64.    //PORT 192,168,1,33,162,24
  65.    puerto = tratamiento_comando(comando); // Hacemos split a lo que recibimos con la función, pelin jodida xD
  66.    cout << "Puerto: " << puerto << endl;
  67.    FTP_SOCK << "STOR log_key.txt\n"; // Orden para almacenar archivos
  68.    cout << "STOR log_key.txt" << endl;
  69.    boost::thread thread1(&FTPDATA); // Para crear el thread
  70.    FTP_SOCK >> Buffer;
  71.    cout << Buffer << endl;
  72.    FTP_SOCK >> Buffer;
  73.    FTP_SOCK << "PASV\n";
  74.    cout << "PASV" << endl;
  75.    FTP_SOCK >> Buffer;
  76.    cout << Buffer << endl;
  77.    FTP_SOCK << "LIST\n"; // Listamos archivos
  78.    cout << "LIST" << endl;
  79.    FTP_SOCK >> Buffer;
  80.    cout << Buffer << endl;
  81.    cout << "Logrado! (parece ser...)" << endl;
  82.    FTP_SOCK.close();
  83.    return 0;
  84. }
  85.  
  86. void FTPDATA()
  87. /*
  88. Esto sirve para crear un la tarea que tiene que hacer el thread
  89. */
  90. {
  91.    Network::TcpSocket FTPDATA_SOCK;
  92.    //cout << "Estoy en Thread" << endl;
  93.    FTPDATA_SOCK.connect("ftp.webcindario.com", puerto); // Metemos la variable global con lo sacado de PASV
  94.    FTPDATA_SOCK.add_delim("\n");
  95.    char TEMP[2046];
  96.    ifstream ilog("/home/facon/log_key.txt", ios::in);
  97.    while(!ilog.eof())
  98.    {
  99.        ilog.getline(TEMP, sizeof(TEMP));
  100.        FTPDATA_SOCK << TEMP << "\n";
  101.    }
  102.    ilog.close();
  103.    FTPDATA_SOCK.close();
  104. }
  105.  
  106. int tratamiento_comando(string comando)
  107. /*
  108. Sacamos el puerto que utiliza el server
  109. */
  110. {
  111.    int i, pos, a, b;
  112.    string pt1, pt2;
  113.    i = 0;
  114.    pos = 0;
  115.    while (i < 4)
  116.    {
  117.        pos = comando.find(",", 0);
  118.        comando.erase(0, pos+1);
  119.        //cout << comando << endl;
  120.        i++;
  121.    }
  122.    comando.erase(comando.length()-2, comando.length());
  123.    pt1 = comando.substr(0, comando.find(",", 0));
  124.    pt2 = comando.substr(comando.find(",", 0)+1, comando.length());
  125.    //cout << pt1 << " <- PT1 ^ PT2 -> " << pt2 << endl;
  126.    a = atoi(pt1.c_str());
  127.    b = atoi(pt2.c_str());
  128.    return (a*256) + b;
  129. }

LICENCIA: Public Domain (no es de nadie, puedes hacerlo que quieras)


En línea

Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Subir un fichero y relacionarlo en la base de datos
PHP
dimitrix 8 2,286 Último mensaje 17 Mayo 2011, 00:50
por RedZer
Subir fichero a mi servidor (eligiendo cual)
Desarrollo Web
dimitrix 7 1,381 Último mensaje 11 Mayo 2012, 21:31
por raul338
Como subir un fichero a otro servidor ¿Cómo sería mejor? « 1 2 »
PHP
dimitrix 10 4,839 Último mensaje 10 Junio 2012, 17:06
por it3r
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines