2009-08-07 27 views
22

Sto cercando una libreria FTP per C++ per fare funzioni ftp di base come autenticarsi, cambiare directory, caricare file, ecc. Ma non riesco a trovarne uno. Ho cercato su Google, Sourceforge e CodeProject (beh, c'è un progetto FTP CLIENT completo per Win95 in CodeProject, tuttavia non ho bisogno dell'intero client ftp ..), ma ho trovato solo librerie C# FTP.Libreria FTP C++?

Potresti, per favore, suggerirmi una buona? o forse un'alternativa?

Grazie.

FYI: Microsoft Visual C++ 2008 Express Edition è il mio unico IDE, e preferisco libreria statica precompilato (* .lib) che può essere collegato in modo statico (se presente)

+0

Si prega di guardare http://www.codeproject.com/Articles/310530/Target-Eye-Revealed-part-Target-Eyes-Unique-Auto che contengono funzionalità FTP di base –

risposta

18

Solo per informare coloro che sono alla ricerca di una buona libreria/classe FTP C++, ho trovato uno molto buono e facile da usare. Usarlo è facile come usare la libreria FTP C# che è già stata creata da molti popoli. Se non hai provato uno, ecco un esempio di codice:

nsFTP::CFTPClient ftpClient; 
nsFTP::CLogonInfo logonInfo("localhost", 21, "anonymous", 
             "[email protected]"); 

// connect to server 

ftpClient.Login(logonInfo); 

// get directory listing 

nsFTP::TSpFTPFileStatusVector list; 
ftpClient.List("/", list); 

// iterate listing 

for(nsFTP::TSpFTPFileStatusVector::iterator it=list.begin(); 
             it!=list.end(); ++it) 
    TRACE("\n%s", (*it)->Name().c_str()); 

// do file operations 

ftpClient.DownloadFile("/pub/test.txt", "c:\\temp\\test.txt"); 

ftpClient.UploadFile("c:\\temp\\test.txt", "/upload/test.txt"); 

ftpClient.RenameFile("/upload/test.txt", "/upload/NewName.txt"); 

ftpClient.Delete("/upload/NewName.txt"); 

// disconnect 

ftpClient.Logout();

http://www.codeproject.com/Articles/8667/FTP-Client-Class e godere!

Ed è completamente programmato in C++ con STL (senza MFC)

Mi dispiace per la commutazione la risposta a questo post, perché credo che questo sia una soluzione migliore, invece di usare quelli che scritti in C .

+1

Hanno esaminato la fonte e l'hanno provata, funziona esattamente come pubblicizzato. Costruito direttamente su socket, pulire il C++ in tutto. – Elemental

+2

Come hai funzionato. Ho copiato tutti i file nel mio progetto e incluso FTPClient.h e sto ricevendo milioni di errori. Caldo per aggiustarlo? – Hooch

+0

Sembra che il collegamento sia rotto ... :-( – Nathan

9

libftp (anche se è in C)
ftplib (di nuovo, sembra C)
libCurl sembra avere funzionalità FTP.

Trovare un'implementazione in C++ potrebbe essere difficile, ma il wrapping di una libreria C in classi C++ non sarebbe difficile se si ha realmente bisogno di un'interfaccia C++.

Modifica: Ho appena visto che preferisci una libreria precompilata. Se questo è un requisito assoluto, probabilmente dovrai usare una libreria C poiché i problemi ABI probabilmente significheranno che una libreria C++ precompilata non funzionerà per te.

+0

Per riferimento, ftplib e libftp sono entrambi GPL. libCurl è molto più aperto. –

+0

ora ftplib è passato a * Artistic License 2.0 * con la sua ultima versione 4.0 – falkb

+0

ftplib non funziona per qualche motivo. Non si compila e in realtà non fa nulla. – Kats

8

Prova libCurl. Ha collegamenti per C++ (cURLpp) e altre 30 lingue.

+0

Straight up libCurl è quello che ho usato. Ho esaminato il wrapper cpp, ma le semplici interfacce C erano altrettanto facili da usare e meglio documentate. –

0

QT ha una classe QFtp che potrebbe contenere tutto ciò che serve.

+5

Purtroppo, QFtp è bacato e non è più supportato .. – atamanroman

+0

Solo una FYI - Non so di bug, ma so che QFtp NON supporta la connessione ai server FTP che restituiscono elenchi in stile DOS in risposta al comando LIST . –

+0

https://bugreports.qt-project.org/browse/QTBUG-19409 – x29a

2

Dai uno sguardo allo Poco Project rilasciato sotto la licenza del software Boost.

Forniscono un'implementazione FTP RFC 959. È possibile eseguire il login o l'aggiornamento dei file, cambiare modalità ecc. Come la funzionalità della classe FTPSession.

saluti,
Ovanes

P.S. È una lib multipiattaforma, che funziona anche su Windows.

0

penso Wininet.h dovrebbe essere sufficiente per Visual Studio 2008

+1

Si potrebbe voler elaborare un poco su è - inserisci qualche dettaglio :) – Caribou