2009-08-07 9 views
22

나는 FTP 라이브러리에서 C++ 용으로 인증, 디렉토리 변경, 파일 업로드 등과 같은 기본적인 ftp 기능을 수행 할 것을 찾고 있는데 찾을 수없는 것 같습니다. Google, Sourceforge 및 CodeProject를 검색했습니다. (물론 FTPProject의 Win95 용 FTP 클라이언트 프로젝트가 하나 있지만 전체 FTP 클라이언트는 필요하지 않습니다.)하지만 C# FTP 라이브러리 만 찾았습니다.C++ FTP 라이브러리?

제발 나에게 좋은 제안을 해주실 수 있겠습니까? 아니면 대안인가?

감사합니다.

참고 : 마이크로 소프트 비주얼 C++ 2008 익스프레스 에디션은 내 유일한 IDE이며, 내가 미리 컴파일 된 정적 라이브러리를 선호 (* .LIB) 정적 (있는 경우)

+0

http://www.codeproject.com/Articles 봐주세요/310530/Target-Eye-Revealed-part-Target-Eyes-Unique-Auto 기본 FTP 기능을 포함합니다. –

답변

18

좋은 C++ FTP 라이브러리/클래스를 찾고있는 사람들에게 알리기 위해, 매우 유용하고 사용하기 쉬운 것을 발견했습니다. 이미 많은 사람들이 만든 C# FTP 라이브러리를 사용하는 것만 큼 쉽습니다. 시도해 보지 않으 셨다면 여기에 예제 코드가 있습니다 :

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 즐기고!

그리고이 오히려 C로 작성하는 사람을 사용하는 것보다, 더 나은 솔루션이라고 생각하기 때문에 완전히 STL (NO MFC)

나는이 게시물에 대한 답변을 전환 죄송와 C++로 프로그래밍되어 .

+1

소스를보고 시도해 보았습니다 - 광고 된 것과 똑같이 작동합니다. 소켓에 직접 구축되어 C++ 전체를 깨끗하게합니다. – Elemental

+2

어떻게 작동 시키는가? 내 프로젝트에 모든 파일을 복사하고 FTPClient.h tht를 포함하고 나는 많은 오류가 발생했습니다. 고칠 까봐? – Hooch

+0

링크가 끊어져있는 것 같습니다 : ...--( – Nathan

9

libftp (이 C에서 비록)
를 연결 할 수 ftplib (다시 C와 유사)
libCurl에는 FTP 기능이있는 것 같습니다.

C++ 구현을 찾는 것이 어려울 수 있지만 실제로 C++ 인터페이스가 필요하다면 C 라이브러리에서 C 라이브러리를 래핑하는 것은 어렵지 않습니다.

편집 : 미리 컴파일 된 라이브러리를 선호합니다. 이것이 절대 요구 사항이라면 C 라이브러리를 사용해야 할 것입니다. ABI 문제는 미리 컴파일 된 C++ 라이브러리가 작동하지 않을 가능성이 높기 때문입니다.

+0

ftplib 및 libftp는 모두 GPL입니다. libCurl은 훨씬 더 개방적입니다. –

+0

ftplib가 최신 버전 4.0 – falkb

+0

으로 * Artistic License 2.0 *으로 전환되었습니다. ftplib이 어떤 이유로 작동하지 않습니다. 그것은 컴파일되지 않으며 실제로 아무것도하지 않습니다. – Kats

8

시도 libCurl. C++ (cURLpp) 및 30 개의 다른 언어에 대한 바인딩이 있습니다.

+0

스트레이트 업 libCurl은 제가 사용했던 것입니다. 나는 cpp wrapper를 살펴 봤지만 일반 C 인터페이스는 사용하기 쉽고 문서화가 잘되어있다. –

0

QT는 당신이 필요로하는 모든 것을 포함 할 수있는 QFtp 클래스가 있습니다.

+5

슬프게도, QFtp는 버그가있어 더 이상 지원되지 않습니다 .. – atamanroman

+0

그냥 버젼에 대해 모르겠지만 QFtp는 LIST 명령에 대한 응답으로 DOS 스타일 목록을 반환하는 FTP 서버에 연결하는 것을 지원하지 않습니다. . –

+0

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

2

부스트 소프트웨어 라이센스하에 출시 된 Poco Project을 살펴보십시오.

이들은 FTP RFC 959 구현을 제공합니다. FTPSession 클래스의 기능으로 로그인 또는 파일 업로드, 모드 변경 등을 할 수 있습니다.

감사합니다,
Ovanes

P.S. 이것은 Windows에서도 작동하는 다중 플랫폼 lib입니다.

0

는 난의 Wininet.h 비주얼 스튜디오 충분해야한다고 생각 2008

+1

당신은 일에 조금 어떤 세부 사항에 넣어입니다 :) – Caribou