2016-11-13 1 views
-4

J'ai besoin de la liste de tous les fichiers et dossiers du serveur ftp.Comment obtenir la liste de tous les fichiers et dossiers du serveur ftp (C++)

Existe-t-il une commande similaire à NLST pour l'ensemble du serveur, pas seulement pour le répertoire en cours?

J'utilise le mode PASV. Ce est connecter au serveur:

void create_socket(int &sock, const char* server_ip, const unsigned short server_port) 
{ 
    struct sockaddr_in server_addr; 

    memset(&server_addr, 0, sizeof(server_addr));// zero out structure 
    server_addr.sin_family = AF_INET;// internet address family 
    server_addr.sin_addr.s_addr = inet_addr(server_ip);// server IP address 
    server_addr.sin_port = htons(server_port);// server port 

    if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) 
    { 
    } 

    if (connect(sock, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) 
    { 
    std::cout << "connect error: " << strerror(errno) << std::endl; 
    exit(1); 
    } 
} 
+0

Comment votre code C++ actuel se connecte-t-il au serveur ftp? –

+0

Avez-vous coché ['boost :: asio'] (http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/overview/core/line_based.html)? –

+2

Vous voulez probablement une bibliothèque client FTP. Utilisez [libcurl] (https://curl.haxx.se/libcurl/) –

Répondre

3

La liste complète des commandes de service FTP commence à la page 29 RFC 959.

Il n'y a pas de commande "Lister tout le contenu du serveur"; il est très probable qu'il en soit ainsi à cause des restrictions liées aux permissions d'accès/contrôle (recherche 'contrôle d'accès' à travers le texte rfc).