2009-08-07 8 views
22

Szukam biblioteki FTP dla języka C++, aby wykonać podstawowe funkcje ftp, takie jak uwierzytelnianie, zmiana katalogu, przesyłanie plików itp., Ale nie mogę go znaleźć. Przeszukałem Google, Sourceforge i CodeProject (cóż, istnieje jeden kompletny projekt KLIENTA FTP dla Win95 w CodeProject, jednak nie potrzebuję całego klienta FTP ..), ale znalazłem tylko biblioteki FTP C#.C++ FTP Library?

Czy możecie zaproponować mi coś dobrego? A może alternatywa?

Dzięki.

FYI: Microsoft Visual C++ 2008 Express Edition jest moim jedynym IDE, a ja wolę skompilowany biblioteki statyczne (* lib), które mogą być statycznie połączone (jeśli w ogóle)

+0

Proszę spojrzeć na http://www.codeproject.com/Articles/310530/Wykryto obiekt-oko-część-celu-Oczy-Unikatowe-Auto, które zawierają podstawową funkcjonalność FTP –

Odpowiedz

18

Po to, aby poinformować tych, którzy szukają dobrej biblioteki/klasy FTP C++, znalazłem bardzo dobry i łatwy w użyciu. Używanie go jest równie łatwe jak korzystanie z biblioteki FTP C#, która została już wykonana przez wiele osób. Jeśli nie próbowałem jedno, oto przykładowy kod:

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 i ciesz się!

i jest całkowicie zaprogramowany w języku C++ z STL (nie MFC)

przykro mi do przełączania odpowiedź na to stanowisko, ponieważ myślę, że jest to lepsze rozwiązanie, zamiast tych, które napisane w C .

+1

Przyjrzałem się źródłu i wypróbowałem - działa dokładnie tak, jak było to reklamowane. Zbudowany bezpośrednio na gniazdach, czysty C++ w całym tekście. – Elemental

+2

Jak to działa. Skopiowałem wszystkie pliki do mojego projektu i włączyłem FTPClient.h i otrzymuję miliony błędów. Gorąco to naprawić? – Hooch

+0

Wygląda na to, że link jest zerwany ... :-( – Nathan

9

libftp (choć to w C)
ftplib (ponownie wygląda jak C)
libCurl wydaje się mieć możliwości FTP.

Znalezienie implementacji C++ może być trudne, ale zawijanie biblioteki C w klasach C++ nie byłoby trudne, jeśli naprawdę potrzebujesz interfejsu C++.

Edytuj: Po prostu zobaczyłem, że wolisz skompilowaną bibliotekę. Jeśli jest to bezwzględny wymóg, prawdopodobnie będziesz musiał użyć biblioteki C, ponieważ problemy z ABI będą najprawdopodobniej oznaczać, że wstępnie skompilowana biblioteka C++ nie będzie działać dla ciebie.

+0

Dla porównania, ftplib i libftp są obie GPL. libCurl jest znacznie bardziej otwarty. –

+0

teraz ftplib przełączył się na * Artystyczną licencję 2.0 * z najnowszą wersją 4.0 – falkb

+0

ftplib nie działa z jakiegoś powodu. Nie kompiluje i nic nie robi. – Kats

8

Wypróbuj libCurl. Ma powiązania dla C++ (cURLpp) i 30 innych języków.

+0

Prosto w górę libCurl jest tym, czego użyłem. Sprawdziłem opakowanie cpp, ale proste interfejsy C były równie łatwe w użyciu i lepiej udokumentowane. –

0

QT ma klasę QFtp które mogą zawierać wszystko, czego potrzebujesz.

+5

Niestety, QFtp jest błędny i nie jest już obsługiwany. – atamanroman

+0

Tylko FYI - nie wiem o buggy, ale wiem, że QFtp NIE obsługuje łączenia się z serwerami FTP, które zwracają listy w stylu DOS w odpowiedzi na polecenie LIST . –

+0

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

2

Spójrz na Poco Project wydany w ramach licencji oprogramowania Boost.

Zapewniają implementację protokołu FTP RFC 959. Możesz zrobić logowanie lub aktualizować pliki, zmieniać tryby itp. Jako funkcjonalność klasy FTPSession.

Pozdrawiam,
Ovanes

PS: Jest to wieloplatformowa biblioteka, która działa również w systemie Windows.

0

myślę Wininet.h powinna być wystarczająca dla visual studio 2008

+1

Być może zechcesz opracować mało na th jest - włożyć w szczegóły :) – Caribou