질문 - URLDownloadToFile 와 유사한 함수가 있나요?

smileng의 이미지

안녕하세요. 리눅스 프로그래밍을 배우고 있는데..
궁금한게 있어서 이렇게 질문 올립니다.

1. MFC 함수에 있는 URLDownloadToFile()가
Linux gcc 에도 이에 상응하는 함수가 있는지요?

URLDownloadToFile()은 해당 URL에 위치한 파일을
다운로드 받아 파일로 저장할 수 있는 기능을 가집니다.

이에 해당하는 함수가 없다면...OTL

즐거운 주말 되세요.
~ 항상 웃는 얼굴 ~

litdream의 이미지

wget 이 있습니다.

삽질의 대마왕...

smileng의 이미지

litdream wrote:
wget 이 있습니다.

wget은 프로그램으로 알고 있고..
무척이나 사랑스러운 프로그램이고..
Linux app 설치할 때 제일 먼저 설치하긴 하지만..(rpm으로)

혹시 모르고 있는
라이브러리 펑션같은 것이 있는지를 알고싶습니다.

wget 소스를 봐야하나요? OTL...

//--------------------------------------
// Not a Programmer, but.....
// ~ EveryDay MiSo ~
//--------------------------------------

litdream의 이미지

왠만하면 infrastructure 코드는 안쓰려는 게으름 때문에,
이런건 어떤지요?

char cmd[BUF_SIZE];
char url[MAX_URL_LEN];
snprintf(cmd, size, "wget %s", url);
if ( system(cmd) != 0 ) {
    //error out
}

exit 코드 조사하는건 언어마다 다릅니다만, 제가 좀 게을러서,
프로토타입은 저렇게 만들고, 저것이 정녕 performance 에 문제가 될때,
그때 고친다는... -_-;;

한번 wget 소스를 보았는데, retreive_url() 이라는 함수를 불러주면 되는데,
파라미터는 별로 어렵지 않습니다만, 그 내부에 http_loop() 이라는, 그리고 또 그 내부적
으로는 프로토콜을 이용하는듯(?) 하다~ 라는 결론만 내리고..
( 귀찮아서, 사실 코드 읽다가 그냥 코멘트만 보고~ 그런갑다~~ 하고 넘어감. )
그냥 system() 한번 쓰고만다는... 휘리릭..

꼭 필요하시면, wget 소스 받아서, 거기서, retr.h/retr.c 와 http.c 를 참조하세요.

삽질의 대마왕...

litdream의 이미지

추가하자면, 사실 프로토 타입 또한 C 로 안만들고 perl 로 만들것 같다는...

$res = `wget $url` || die "ERR from wget, bastard!\n$!\n";

휘리릭~

삽질의 대마왕...

nohmad의 이미지

라이브러리로 불러 쓰기에는 libcurl이 나을 것 같습니다. 개인적으로는 커맨드라인 명령으로써도 curl(1)이 wget(1) 보다 나은 것 같더군요.

예제를 보세요.

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
    res = curl_easy_perform(curl);

    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  return 0;
}

더 많은 예제는..

http://cool.haxx.se/cvs.cgi/curl/docs/examples/

smileng의 이미지

litdream님의 wget 사랑^^
그리고, nohmad님의 libcurl 소개
두 분께 감사드립니다.

개인적으로 라이브러리인 curl에 관심이 많이 갑니다.
또 다른 라이브러리가 있을지 모르지만 만족합니다.

//--------------------------------------
// Not a Programmer, but.....
// ~ EveryDay MiSo ~
//--------------------------------------

익명 사용자의 이미지

curl 라이브러리를 저도 추천합니다.
(C상에서 사용법은 저도 잘 모르지만..
PHP가지고 놀 때 본 거라)

기능이 다양합니다. 인상적인 것은 쿠키 흉내를 낼 수 있다는 건데..
해킹용으로도 쓸 수 있다는. :)
C보다는 스크립트 언어에서 더 간단하게 쓸 수 있을 겁니다.
(문자열 처리가 C에서는 귀찮잖아요.. ㅎㅎ)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.