Мне нужен список всех файлов и папок на FTP-сервере.
Существует ли команда, аналогичная NLST, для всего сервера, а не только для текущего каталога?
Я использую режим PASV.
Это подключение к серверу:
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);
}
}
Полный список команд службы FTP начинается со страницы 29 в RFC 959.
Нет команды «Просмотреть весь контент сервера»; очень вероятно, что это так из-за ограничений, связанных с правами доступа / контроля (поиск «контроль доступа» по тексту rfc).
Других решений пока нет …