-----------------------------------------------------------------------------------
curl is a command line tool for transferring data with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.
출처 - http://curl.haxx.se/
----------------------------------------------------------------------------------
cURL 이란 FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE을 지원하는 URL 형식의 데이타를 전송하기 위한 명령어라인 툴이다. cURL은 SSL 등급, HTTP POST, HTTP PUT, FTP 업로딩, 업로드를 배이스로한 HTTP 형태, 프록시, 쿠키, 아이디와 패스워드로된 인증, 파일 이어받기, 프록시 터널링 과 다른 유용한 트릭들의 버스로드를 지원한다.
라고 홈페이지 매인 화면에 나와있는대 이것만 봐서는 뭘 하는 놈인지 감을 잡기 힘들다. 하지만 데이타를 전송하기 위한 툴! 이라는 것은 확실히 알 수 있을 것 같다.
이번 프로젝트에서 런쳐를 만들게 됬는데 런쳐 시스템에서 파일을 전송할 때 사용하기로 한 툴이 바로 cURL이다. 사용을 하려면 일단 잘 알아야 하지 않겠는가?.. 공부하자!
일단 cURL을 사용하기 위한 준비를 해보자. 참고로 필자는 Windows vista x64, Visual Studio 2008 sp1을 사용한다.
정식 홈패이지 왼쪽 탭에 다운로드(http://curl.haxx.se/download.html)에 가보면 최신 버전의 Source Archives가 올라와 있다. 원하는 형태의 파일을 다운로드 해 보자. 필자는 curl-7.20.0.tar.gz파일을 다운로드 받았다.
다운 받은 파일의 압축을 풀어 준 후 폴더 안으로 들어가 보자. 그 안에 여러 파일들이 있겠지만 그중 vc6curl.dsw라고 된 프로젝트 파일이 있을 것이다. 프로젝트를 열어보자. 그럼 2개의 프로젝트가 열릴 것이다. 하나는 curlsrc이고 하나는 libcurl소스이다. curlsrc는 cURL 툴의 풀 소스이고 libcurl은 라이브러리를 만드는데 사용되는 소스이다. 나는 curl의 라이브러리를 가져가다 만들 것이므로 libcurl을 가지고 Library를 만들어 보겠다.
libcurl 프로젝트를 오른쪽 클릭해서 속성을 열어보자. 필자가 쓸 라이브러리는 Static 라이브러리이다.구성에서 LIB Debug탭을 눌러 C/C++ -> 일반 을 보면 디버깅 정보 형식이 있다. 이걸 C7 호환(/Z7)으로 바꿔 주자.(이 형식은 디버깅 정보를 pdb파일이 아니라 obj파일에 담기 때문에 따로 pdb파일이 없이도 디버깅을 할 수 있다는 장점이 있다.)
그럼 빌드 -> 일괄 빌드를 클릭해서 LIB Release와 LIB Debug만 체크하고 빌드를 눌러보자. 아무 문제 없이 빌드가 성공하는걸 볼 수 있다. 각각의 폴더로 들어가 보면 libcurl.lib, libcurld.lib 가 각각 생성 되었다.
이제 이 라이브러리들을 가지고 curl을 작업할 수 있게 되었다.
다음 글에는 cURL을 좀더 편리하게 사용하기 위해 C++환경으로 제작된 cURLpp에 대해서 알아보겠다.