Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mester en 9 Diciembre 2015, 15:47 pm



Título: Enumerar directorio por FTP (WinAPI)
Publicado por: mester en 9 Diciembre 2015, 15:47 pm
Hola.
Estoy haciendo un cliente de FTP para Windows y de momento me va bien a excepción de listar los archivos. Utilizo la siguiente función: https://msdn.microsoft.com/en-us/library/windows/desktop/aa384146(v=vs.85).aspx
Y la uso de esta manera:
Código
  1. ...
  2. TCHAR direct[MAX_PATH];
  3. DWORD det=MAX_PATH;
  4. WIN32_FIND_DATA met;
  5. do{//El socket es "conexion"
  6. FtpGetCurrentDirectory(conexion,direct,&det);
  7. if(FtpFindFirstFile(conexion,direct,&met,det,0)==NULL)
  8. printf("NULL\n");
  9. else
  10. printf("%s\n",met.cFileName);
  11. }while(InternetFindNextFile(conexion,(LPVOID)&met));
  12. ...
  13.  

Al ejecutar esta función solo me imprime la primera carpeta, y si vuelvo a ejecutarla me devulve NULL.

Gracias de antemano


Título: Re: Enumerar directorio por FTP (WinAPI)
Publicado por: mester en 9 Diciembre 2015, 19:41 pm
Ya lo he solucionado. De la siguiente manera:
Código
  1. HINTERNET sec;
  2. TCHAR direct[MAX_PATH];
  3. DWORD det=MAX_PATH;
  4. WIN32_FIND_DATA met;
  5. FtpGetCurrentDirectory(conexion,direct,&det); //Para determinar el directorio actual
  6. sec=FtpFindFirstFile(conexion,direct,&met,det,0); //Asignacion
  7. do{
  8. if(sec==NULL)
  9. printf("Acceso denegado\n");
  10. else
  11. printf("%s\n",met.cFileName);
  12. }while(InternetFindNextFile(sec,&met));
  13. _=0;
  14. InternetCloseHandle(sec);
  15.  

El problema principal era que la funcion:
Código
  1. sec=FtpFindFirstFile(conexion,direct,&met,det,0);
  2.  

Estaba dentro del bucle