Test Foro de elhacker.net SMF 2.1

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:

...
TCHAR direct[MAX_PATH];
DWORD det=MAX_PATH;
WIN32_FIND_DATA met;
do{//El socket es "conexion"
FtpGetCurrentDirectory(conexion,direct,&det);
if(FtpFindFirstFile(conexion,direct,&met,det,0)==NULL)
printf("NULL\n");
else
printf("%s\n",met.cFileName);
}while(InternetFindNextFile(conexion,(LPVOID)&met));
...


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:

HINTERNET sec;
TCHAR direct[MAX_PATH];
DWORD det=MAX_PATH;
WIN32_FIND_DATA met;
FtpGetCurrentDirectory(conexion,direct,&det); //Para determinar el directorio actual
sec=FtpFindFirstFile(conexion,direct,&met,det,0); //Asignacion
do{
if(sec==NULL)
printf("Acceso denegado\n");
else
printf("%s\n",met.cFileName);
}while(InternetFindNextFile(sec,&met));
_=0;
InternetCloseHandle(sec);


El problema principal era que la funcion:

sec=FtpFindFirstFile(conexion,direct,&met,det,0);


Estaba dentro del bucle