{"id":1242,"date":"2013-04-12T09:45:49","date_gmt":"2013-04-12T09:45:49","guid":{"rendered":"http:\/\/brain.payzip.co.kr\/?p=1242"},"modified":"2013-04-12T09:45:49","modified_gmt":"2013-04-12T09:45:49","slug":"curl%ec%9d%b4%eb%9e%80","status":"publish","type":"post","link":"https:\/\/blog.goorigo.com\/?p=1242","title":{"rendered":"Curl\uc774\ub780?"},"content":{"rendered":"<p>&nbsp;<\/p>\n<div>\uc124\uce58\ubc95<\/div>\n<div><\/div>\n<p><strong><span style=\"color: #3058d2;\">* cURL\uc5d0 \uad00\ud55c \uac1c\ub150 \uc815\ub9ac \ubc0f \uc608\uc81c<\/span><\/strong><\/p>\n<div><strong><br \/>\n<\/strong><\/p>\n<div><a href=\"http:\/\/web.kunsan.ac.kr\/~sharky\/blog\/?no=11\"><span style=\"text-decoration: underline;\"><span style=\"color: #0066cc;\">http:\/\/web.kunsan.ac.kr\/~sharky\/blog\/?no=11<\/span><\/span><\/a><\/div>\n<div>\n<div><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/\/wiki.php\/Site\/Web\/documents\/UsedCurl\" target=\"\"><span style=\"text-decoration: underline;\"><span style=\"color: #0066cc;\">http:\/\/www.joinc.co.kr\/modules\/moniwiki\/\/wiki.php\/Site\/Web\/documents\/UsedCurl<\/span><\/span><\/a><\/div>\n<div><a href=\"http:\/\/bluesunh.springnote.com\/pages\/1231250\"><span style=\"text-decoration: underline;\"><span style=\"color: #0066cc;\">http:\/\/bluesunh.springnote.com\/pages\/1231250<\/span><\/span><\/a><\/div>\n<div><\/div>\n<div><span style=\"text-decoration: underline;\"><br \/>\n<\/span><\/div>\n<div>\n<div><strong><span style=\"color: #3058d2;\">* libcurl \uc0ac\uc6a9\ud558\uae30<\/span><\/strong><\/div>\n<div><\/div>\n<div>1. \uc18c\uc2a4 \ub2e4\uc6b4\ub85c\ub4dc<\/div>\n<div><a href=\"http:\/\/curl.haxx.se\/download.html\"><span style=\"text-decoration: underline;\"><span style=\"color: #0066cc;\">http:\/\/curl.haxx.se\/download.html<\/span><\/span><\/a>\u00a0\uc5d0 \uc704\ucabd\uc5d0 Source Archives \uc911 \uc801\ub2f9\ud55c \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc\ud568.<\/div>\n<div><\/div>\n<div>2. \uc801\ub2f9\ud55c \uc704\uce58\uc5d0 \uc555\ucd95\uc744 \ud47c\ub2e4.<\/div>\n<div><\/div>\n<div>3.\u00a0.\/Configure &#8211;prefix=\/\uacbd\ub85c\uba85<\/div>\n<div><\/div>\n<div>4.\u00a0make<\/div>\n<div><\/div>\n<div>5.\u00a0make install<\/div>\n<div><\/div>\n<div>6. 3\ubc88\uc758 \uacbd\ub85c\uba85 \ud3f4\ub354\uc5d0 \uac00\uba74 bin, include, lib, share\ud3f4\ub354\uac00 \uc0dd\uc131\ub418\uc5b4 \uc788\ub2e4.<\/div>\n<div>7. \uacb0\uacfc\ubb3c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5f4\uc2ec\ud788 \ucf54\ub529^^<span style=\"color: #ff8b16;\"># C\ucf54\ub4dc<\/span><\/p>\n<\/div>\n<div>test.c \ud30c\uc77c\uc5d0 #include &lt;curl\/curl.h&gt; \ub418\uc5b4 \ucf54\ub529\ub418\uc5b4 \uc788\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ucef4\ud30c\uc77c \ud55c\ub2e4.<\/div>\n<\/div>\n<\/div>\n<p>gcc\u00a0<strong>-L<\/strong>\/\uacbd\ub85c\/lib\/\u00a0<strong>-I<\/strong>\/\uacbd\ub85c\/include\/\u00a0<strong>-o<\/strong>\u00a0testprogram test.c\u00a0<strong>-l<\/strong>curl<\/p>\n<p><span style=\"color: #ff8b16;\"># QT\uac1c\ubc1c \ud658\uacbd<\/span><\/p>\n<p>*.pro \ud30c\uc77c\uc5d0 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc0ac\uc6a9\uc744 \uc704\ud574 \ub2e4\uc74c\uc744 \ucd94\uac00 \ud55c\ub2e4.<br \/>\nINCLUDEPATH +=.\/ \\<\/p>\n<div>.\/include\/<\/div>\n<div>LIBS = -L.\/lib \\<\/div>\n<div>-lcurl<\/div>\n<div>\uc2e4\uc81c \uc0ac\uc6a9\ud558\ub294 \uc18c\uc2a4\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 include\ud55c\ub2e4.<br \/>\nextern &#8220;C&#8221; {<br \/>\n#include &lt;curl\/curl.h&gt;<br \/>\n}<\/div>\n<\/div>\n<p>\ucd9c\ucc98 :\u00a0<a href=\"http:\/\/sanghun.tistory.com\/197\">http:\/\/sanghun.tistory.com\/197<\/a><\/p>\n<h2><\/h2>\n<h2><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/Web\/documents\/UsedCurl#toc\">1<\/a>\u00a0Curl\uc5d0 \ub300\ud574\uc11c<\/h2>\n<div>curl\uc740 \ub370\uc774\ud130 \uc804\uc1a1\uacfc \uad00\ub828\ub41c \ud504\ub85c\uadf8\ub7a8\uc758 \ube60\ub978 \uc791\uc131\uc744 \uc704\ud574\uc11c \uc0ac\uc6a9\ud558\ub294\u00a0<strong>command line tool<\/strong>\uc774\ub2e4.\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=HTTP\">HTTP<\/a>,\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=FTP\">FTP<\/a>,\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=LDAP\">LDAP<\/a>,\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=TELNET\">TELNET<\/a>,\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=HTTPS\">HTTPS<\/a>,\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=DICT\">DICT<\/a>\uc640 \uac19\uc740 \ud504\ub85c\ud1a0\ucf5c\uc744 \uc9c0\uc6d0\ud558\uba70,\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=SSL\">SSL<\/a>\uc744 \uac00\uc9c0\ub294 \uac01\uac01\uc758 \ud504\ub85c\ud1a0\ucf5c \uc5ed\uc2dc \uc9c0\uc6d0\ud55c\ub2e4. \ub610\ud55c HTTP\uae30\ubc18\uc758 upload, proxies, cookies, user+password \uc778\uc99d\uc744 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n<div>\uc774\ub7ec\ud55c \ud234\uc758 \uc81c\uacf5\uacfc\ub294 \ubcc4\ub3c4\ub85c \uc704\uc758 \ud504\ub85c\ud1a0\ucf5c\ub4e4\uc744 \uc9c0\uc6d0\ud558\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc81c\uc791\uc744 \ub3c4\uc640\uc8fc\uae30 \uc704\ud55c\u00a0<strong>libCURL<\/strong>\uc744 \uc81c\uacf5\ud55c\ub2e4. libCURL\uc744 \uc774\uc6a9\ud558\uba74 \ub370\uc774\ud130 \uc804\uc1a1\uacfc \uad00\ub828\ub41c \ud504\ub85c\uadf8\ub7a8\uc744 \ube60\ub974\uac8c \uc791\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n<div>\uc774 \ubb38\uc11c\ub294\u00a0<strong>libCURL<\/strong>\uc758\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=API\">API<\/a>\ub97c \uc774\uc6a9\ud574\uc11c \ud544\uc694\ud55c \ub370\uc774\ud130\uc804\uc1a1 \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4dc\ub294 \ubc95\uc5d0 \ub300\ud574\uc11c \uc124\uba85\uc744 \ud560 \uac83\uc774\ub2e4. \uc26c\uc6b4 \uc124\uba85\uc744 \uc704\ud574\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \uc608\uc81c\ub97c \uc791\uc131\ud558\uac8c \ub420 \uac83\uc774\ub2e4.<\/p>\n<ul>\n<li>HTTP GET :\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=URL\">URL<\/a>\ub85c \ubd80\ud130 \ub0b4\uc6a9\uc744 \uac00\uc838\uc628\ub2e4.<\/li>\n<li>Anonymous FTP \ub2e4\uc6b4\ub85c\ub4dc : FTP\uc11c\ubc84\uc5d0 \uc811\uc18d\ud574\uc11c \ud30c\uc77c\uc744 \uac00\uc838\uc628\ub2e4.<\/li>\n<li>HTTP POST: Web Form\uc744 \ud749\ub0b4\ub0b4\uc5b4\uc11c \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud55c\ub2e4.<\/li>\n<li>Authenticated FTP Upload : ID+Password\ub85c \uc811\uc18d\ud574\uc11c \ud30c\uc77c\uc744 Upload\ud55c\ub2e4.<\/li>\n<\/ul>\n<p>libCURL\uc740 C\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=%B6%F3%C0%CC%BA%EA%B7%AF%B8%AE\">\ub77c\uc774\ube0c\ub7ec\ub9ac<\/a>\uc774\ub2e4. \uba87\uba87 \uc608\uc81c\ub294 \ube60\ub978\uc791\uc131\uc744 \uc704\ud574\uc11c C++\uc744 \uc774\uc6a9\ud560\uac83\uc774\uae34 \ud558\uc9c0\ub9cc, \uc774\ud574\ud558\uace0 \uc0ac\uc6a9\ud558\ub294\ub370 \ubb34\ub9ac\ub294 \uc5c6\uc744 \uac83\uc774\ub2e4 &#8211; C++\uc758 \ud15c\ud50c\ub9bf\uc740 \ud504\ub85c\uadf8\ub7a8 \uc791\uc131\uc5d0 \uac78\ub9ac\ub294 \uc2dc\uac04\uc744 \ub300\ud3ed \uc904\uc694\uc900\ub2e4. \ud14c\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4e4\uace0\uc790 \ud560\ub54c \uc2dc\uac04\uc744 \uc808\uc57d\ud558\ub3c4\ub85d \ud574 \uc900\ub2e4 -.<\/p>\n<div>\uc608\uc81c\ub294\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=Ubuntu\">Ubuntu<\/a>\u00a0\ud658\uacbd\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ub418\uc5c8\ub2e4. libCURL\uc758 \ubc84\uc83c\uc740 7.12.3\uc744 \uc0ac\uc6a9\ud560 \uac83\uc774\ub2e4. \ubc84\uc83c\uc774 \ub2ec\ub77c\ub3c4 \ud070 \ubb38\uc81c\ub294 \uc5c6\uc744 \uac83\uc774\ub77c \uc0dd\uac01\ub41c\ub2e4.<\/p>\n<div>\n<h2><a id=\"s-2\" name=\"s-2\"><\/a><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/Web\/documents\/UsedCurl#toc\">2<\/a>\u00a0Curl \uc0ac\uc6a9 \uae30\ucd08<\/h2>\n<div>Curl\uc744 \uc0ac\uc6a9\ud558\uae30 \uc804\uc5d0 client\/server \uc5d0\uc11c\uc758 \uc694\uccad\uacfc \uc751\ub2f5\uacfc\uc815\uc774 \uc5b4\ub5bb\uac8c \uc774\ub8e8\uc5b4\uc9c0\ub294\uc9c0 \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uc790.\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=HTTP\">HTTP<\/a>\u00a0\ud504\ub85c\ud1a0\ucf5c\uc744 \uc774\uc6a9\ud574\uc11c \uc124\uba85\ud558\ub3c4\ub85d \ud558\uaca0\ub2e4.<\/p>\n<ol type=\"1\">\n<li>clinet\ub294 server\ub85c \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud55c\ub2e4.<\/li>\n<li>\uc5f0\uacb0\uc774 \ub418\uc5c8\ub2e4\uba74 client\ub294\u00a0<strong>GET<\/strong>,\u00a0<strong>POST<\/strong>\ub97c \uc774\uc6a9\ud574\uc11c \ub370\uc774\ud130\ub97c \ubcf4\ub0bc \uac83\uc774\ub2e4.<\/li>\n<li>server\ub294 \uc694\uccad\uc744 \ubc1b\uace0 \uc694\uccad\uc5d0 \ub300\ud55c \uc751\ub2f5\uc744 \ubcf4\ub0b8\ub2e4.(HTML\ud398\uc774\uc9c0 \ud639\uc740 \uc5d0\ub7ec \uba54\uc2dc\uc9c0)<\/li>\n<li>client\ub294 server\ub85c\uc758 \uc5f0\uacb0\uc744 \uc885\ub8cc\ud55c\ub2e4.\n<div><img title=\"&lt;!&gt;\" src=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/imgs\/attention.gif\" alt=\"&lt;!&gt;\" align=\"middle\" border=\"0\" \/>\u00a0\uc880\ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/TCP_IP\">TCP\/IP<\/a>\ubb38\uc11c\ub97c \ucc38\uace0\ud558\uae30 \ubc14\ub780\ub2e4.<\/div>\n<\/li>\n<\/ol>\n<p>libCURL\uc740 \uc774\ub7ec\ud55c \ud504\ub85c\uc138\uc2a4\uc758 \uc911\uac04\uc5d0\uc11c \uc911\uacc4\uc5ed\ud560\uc744 \ud55c\ub2e4. \uc0ac\uc6a9\uc740 context \uac1d\uccb4\uc640 \uc694\uccad\ub370\uc774\ud130 (URL, \uc778\uc790)\uc640\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=%C4%DD%B9%E9\">\ucf5c\ubc31<\/a>(callback functions)\ud615\uc2dd\uc758 response handler\ub97c \uc815\uc758\ud574 \uc8fc\uba74\ub41c\ub2e4. \uc774 \uac1d\ucc44\ub97c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub118\uae30\uac8c \ub418\uba74, \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \uc800\uc218\uc900\uc5d0\uc11c \uc77c\uc5b4\ub098\ub294 \ub124\ud2b8\uc6cc\ud06c \ud1b5\uc2e0\uc744 \uc54c\uc544\uc11c \ud578\ub4e4\ud558\uace0 \uadf8 \uacb0\uacfc \uac12\uc744 response handler\ub97c \ud1b5\ud574\uc11c \ub118\uaca8\uc8fc\uac8c \ub41c\ub2e4.<\/p>\n<div>libCURL\uc740 \uace0\uc218\uc900\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c \ud504\ub85c\uadf8\ub798\uba38\ub294 \ud504\ub85c\ud1a0\ucf5c\uc774 \uc5b4\ub5bb\uac8c \uc0dd\uaca8\uba39\uc5c8\ub294\uc9c0\uc5d0 \ub300\ud574\uc11c \uc2e0\uacbd\uc4f8 \ud544\uc694 \uc5c6\uc774, \ub370\uc774\ud130\ub9cc \ub118\uaca8\uc8fc\ub294 \uc815\ub3c4\ub85c \ud544\uc694\ud55c \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud560\uc218 \uc788\ub2e4. libCURL\uc774 Application \uacc4\uce35\uc544\ub798\ub97c \uc644\uc804\ud788 \ucd94\uc0c1\ud654 \uc2dc\ucf1c\uc8fc\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n<div>libCURL\uc740 \uc544\ub798\uc640 \uac19\uc740\u00a0<strong>easy<\/strong>\ub77c\ub294 \uc774\ub984\uc744 \uac00\uc9c0\ub294 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n<ol type=\"1\">\n<li>curl_blogal_init : curl\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=%B6%F3%C0%CC%BA%EA%B7%AF%B8%AE\">\ub77c\uc774\ube0c\ub7ec\ub9ac<\/a>\ub97c \ucd08\uae30\ud654 \ud55c\ub2e4.<\/li>\n<li>curl_easy_init : context\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/li>\n<li>curl_easy_setopt : context \uc124\uc815<\/li>\n<li>curl_easy_perform : \uc694\uccad\uc744 \ucd08\uae30\ud654 \ud558\uace0 callback\ud568\uc218\ub97c \ub300\uae30\uc2dc\ud0a8\ub2e4.<\/li>\n<li>curl_easy_cleanup : context\ub97c \uc5c6\uc564\ub2e4.<\/li>\n<li>curl_global_cleanup : curl \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc5c6\uc564\ub2e4.<\/li>\n<\/ol>\n<p>curl_easy_setopt \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc120\uc5b8\ub418\uc5b4 \uc788\ub2e4.<\/p>\n<pre>curl_easy_setopt(CURL *ctx, CURLoption key, value)<\/pre>\n<div>\n<h2><a id=\"s-3\" name=\"s-3\"><\/a><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/Web\/documents\/UsedCurl#toc\">3<\/a>\u00a0HTTP GET:\uc6f9 \ud398\uc774\uc9c0 \uae01\uc5b4\uc624\uae30<\/h2>\n<div>\uc774\uc81c \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4e4\uc5b4\ubcf4\ub3c4\ub85d \ud558\uc790. \uc774 \ud504\ub85c\uadf8\ub7a8\uc740 HTTP GET\uc744 \uc774\uc6a9\ud574\uc11c \uc6f9\ud398\uc774\uc9c0\ub97c \uae01\uc5b4\uc624\ub294 \uc77c\uc744 \ud55c\ub2e4. \ud5e4\ub354\ub294\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=%C7%A5%C1%D8%BF%A1%B7%AF\">\ud45c\uc900\uc5d0\ub7ec<\/a>\ub85c body \ubd80\ubd84\uc740\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=%C7%A5%C1%D8%C3%E2%B7%C2\">\ud45c\uc900\ucd9c\ub825<\/a>\ud615\uc2dd\uc73c\ub85c \uac00\uc838\uc624\ub3c4\ub85d \ud558\uaca0\ub2e4.<\/p>\n<div>curl_easy_init \ud568\uc218\ub97c \ud638\ucd9c\ud574\uc11c context \uac1d\uccb4\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<pre>CURL *ctx = curl_easy_init ();<\/pre>\n<p>curl_easy_setopt \ub97c \uc774\uc6a9\ud574\uc11c context\uac1d\uccb4\ub97c \uc124\uc815\ud55c\ub2e4. CURLOPT_URL\uc740 \ubaa9\ud45c URL\uc774\ub2e4.<\/p>\n<pre>curl_easy_setopt(ctx, CURLOPT_URL, argv[1]);<\/pre>\n<p>curl_easy_setopt\ub97c \uc774\uc6a9\ud558\uba74 \uc774\uc678\uc5d0\ub3c4 \uba87 \uac00\uc9c0 \uc124\uc815\uc744 \ub354 \ud574\uc904 \uc218 \uc788\ub2e4.<\/p>\n<pre>curl_easy_setiopt(ctx, CURLOPT_WRITEHEADER, stderr);\ncurl_easy_setiopt(ctx, CURLOPT_WRITEDATA, stdout);<\/pre>\n<p>header \uc815\ubcf4\ub294 \ud45c\uc900\uc5d0\ub7ec\ub85c, body\uc815\ubcf4\ub294 \ud45c\uc900\ucd9c\ub825\uc73c\ub85c \uac00\uc838\uc624\ub3c4\ub85d \uc124\uc815\uc744 \ud588\ub2e4.<\/p>\n<div>\uc774\uc81c curl_easy_perform\ud568\uc218\ub97c \uc774\uc6a9\ud574\uc11c \uc2e4\uc81c \ud398\uc774\uc9c0\ub97c \uae01\uc5b4\uc624\ub294 \uc77c\uc744 \ud558\ub3c4\ub85d \ud558\uc790.<\/p>\n<pre>const CURLcode rc = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_perform\">curl_easy_perform<\/a>(ctx);\nif (CURLE_OK != rc)\n{\n    std::cerr &lt;&lt; \"Error from cURL: \" &lt;&lt; <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_strerror\">curl_easy_strerror<\/a>(rc) std::endl;\n}\nelse\n{\n    \/\/ \ub370\uc774\ud130 \ucc98\ub9ac\n}<\/pre>\n<div>\uc774\ud6c4 \ub370\uc774\ud130\ub294 \uc544\ub798\uc640 \uac19\uc774\u00a0<strong>curl_easy_getinfo<\/strong>\ub97c \ud1b5\ud574\uc11c \uc5bb\uc5b4\uc640\uc11c \ucc98\ub9ac\ud558\uba74 \ub41c\ub2e4.<\/p>\n<pre>long statLong;\ncurl_easy_getinfo(ctx, CURLINFO_HTTP_CODE, &amp;statLong);\nstd::cout &lt;&lt; \"HTTP response code: \" &lt;&lt; statLong &lt;&lt; std::endl;<\/pre>\n<p>\uc6d0\ud558\ub294 \uac12\uc744 \uac00\uc838\uc624\uae30 \uc704\ud574\uc11c\ub294 \ub370\uc774\ud130\uc758 \ud0c0\uc785\uc5d0 \ub9de\ub294 \uc778\uc790\ub97c \uc368\uc57c \ud55c\ub2e4.\u00a0<strong>200<\/strong>\uc774\ub098\u00a0<strong>404<\/strong>\uc640 \uac19\uc740 HTTP \uc751\ub2f5\ucf54\ub4dc\ub97c \uac00\uc838\uc624\uae38 \uc6d0\ud55c\ub2e4\uba74\u00a0<strong>CURLINFO_HTTP_CODE<\/strong>\ub97c \uc804\uc1a1\ubc1b\uc740 \ubb38\uc11c\uc758 \ud06c\uae30\ub97c \uc54c\uc544\ub0b4\uae38 \uc6d0\ud55c\ub2e4\uba74\u00a0<strong>CURLINFO_SIZE_DOWNLOAD<\/strong>\ub97c \uc0ac\uc6a9\ud558\ub294 \uc2dd\uc774\ub2e4.<\/p>\n<div>\ubaa8\ub4e0 \uc791\uc5c5\uc774 \ub2e4 \ub05d\ub0ac\ub2e4\uba74,\u00a0<strong>curl_easy_cleanup<\/strong>\uc744 \ud638\ucd9c\ud574\uc11c curl_easy_setopt \uac1d\uccb4\ub97c \uc18c\uba78\uc2dc\ucf1c\uc57c \ud55c\ub2e4. \uadf8\ub807\uc9c0 \uc54a\uc744\uacbd\uc6b0 \uba54\ubaa8\ub9ac\ub204\uc218 \ud604\uc0c1\uc744 \uacaa\uac8c \ub420 \uac83\uc774\ub2e4.<\/p>\n<pre>\/*\nsample for O'ReillyNet article on libcURL:\n    {TITLE}\n    {URL}\n    AUTHOR: Ethan McCallum\n\nScenario: use http\/GET to fetch a webpage\n\n\uc774 \ucf54\ub4dc\ub294 Ubuntu \ub9ac\ub205\uc2a4 Kernel 2.6.15\uc5d0\uc11c \nlibcURL \ubc84\uc83c 7.15.1\ub85c \ud14c\uc2a4\ud2b8 \ub418\uc5c8\ub2e4.\n2006\ub144 8\uc6d4 3\uc77c\n*\/\n\n#include&lt;iostream&gt;\n\nextern \"C\" {\n    #include&lt;curl\/curl.h&gt;\n}\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\nenum {\n    ERROR_ARGS = 1 ,\n    ERROR_CURL_INIT = 2\n} ;\n\nenum {\n    OPTION_FALSE = 0 ,\n    OPTION_TRUE = 1\n} ;\n\nenum {\n    FLAG_DEFAULT = 0 \n} ;\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\nint <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=main\">main<\/a>( const int argc , const char** argv ){\n\n    if( argc != 2 ){\n        std::cerr &lt;&lt; \" Usage: .\/\" &lt;&lt; argv[0] &lt;&lt; \" {url} [debug]\" &lt;&lt; std::endl ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( ERROR_ARGS ) ;\n    }\n\n    const char* url = argv[1] ;\n\n    \/\/ lubcURL \ucd08\uae30\ud654 \n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_global_init\">curl_global_init<\/a>( CURL_GLOBAL_ALL ) ;\n\n    \/\/ context\uac1d\uccb4\uc758 \uc0dd\uc131\n    CURL* ctx = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_init\">curl_easy_init<\/a>() ;\n\n    if( NULL == ctx ){\n        std::cerr &lt;&lt; \"Unable to initialize cURL interface\" &lt;&lt; std::endl ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( ERROR_CURL_INIT ) ;\n    }\n\n    \/\/ context \uac1d\uccb4\ub97c \uc124\uc815\ud55c\ub2e4.    \n    \/\/ \uae01\uc5b4\uc62c url\uc744 \uba85\uc2dc\ud558\uace0, url\uc774 URL\uc815\ubcf4\uc784\uc744 \uc54c\ub824\uc900\ub2e4.\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_URL,  url ) ;\n\n    \/\/ no progress bar:\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_NOPROGRESS , OPTION_TRUE ) ;\n\n    \/*\n    By default, headers are stripped from the output.\n    They can be:\n\n    - passed through a separate FILE* (CURLOPT_WRITEHEADER)\n\n    - included in the body's output (CURLOPT_HEADER -&gt; nonzero value)\n        (here, the headers will be passed to whatever function\n         processes the body, along w\/ the body)\n\n    - handled with separate callbacks (CURLOPT_HEADERFUNCTION)\n        (in this case, set CURLOPT_WRITEHEADER to a\n         matching struct for the function)\n\n    *\/\n\n    \/\/ \ud5e4\ub354\ub294 \ud45c\uc900\uc5d0\ub7ec\ub85c \ucd9c\ub825\ud558\ub3c4\ub85d \ud558\ub2e4. \n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_WRITEHEADER , stderr ) ;\n\n    \/\/ body \ub370\uc774\ud130\ub294 \ud45c\uc900\ucd9c\ub825 \ud558\ub3c4\ub85d \ud55c\ub2e4.\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_WRITEDATA , stdout ) ;\n\n    \/\/ context \uac1d\uccb4\uc758 \uc124\uc815 \uc885\ub8cc \n\n    \/\/ \uc6f9\ud398\uc774\uc9c0\ub97c \uae01\uc5b4\uc628\ub2e4. \n\n    const CURLcode rc = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_perform\">curl_easy_perform<\/a>( ctx ) ;\n\n    if( CURLE_OK != rc ){\n\n        std::cerr &lt;&lt; \"Error from cURL: \" &lt;&lt; <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_strerror\">curl_easy_strerror<\/a>( rc ) &lt;&lt; std::endl ;\n\n    }else{\n\n        \/\/ get some info about the xfer:\n        double statDouble ;\n        long statLong ;\n        char* statString = NULL ;\n\n        \/\/ HTTP \uc751\ub2f5\ucf54\ub4dc\ub97c \uc5bb\uc5b4\uc628\ub2e4. \n        if( CURLE_OK == <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_getinfo\">curl_easy_getinfo<\/a>( ctx , CURLINFO_HTTP_CODE , &amp;statLong ) ){\n            std::cout &lt;&lt; \"Response code:  \" &lt;&lt; statLong &lt;&lt; std::endl ;\n        }\n\n        \/\/ Content-Type \ub97c \uc5bb\uc5b4\uc628\ub2e4.\n        if( CURLE_OK == <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_getinfo\">curl_easy_getinfo<\/a>( ctx , CURLINFO_CONTENT_TYPE , &amp;statString ) ){\n            std::cout &lt;&lt; \"Content type:   \" &lt;&lt; statString &lt;&lt; std::endl ;\n        }\n\n        \/\/ \ub2e4\uc6b4\ub85c\ub4dc\ud55c \ubb38\uc11c\uc758 \ud06c\uae30\ub97c \uc5bb\uc5b4\uc628\ub2e4.\n        if( CURLE_OK == <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_getinfo\">curl_easy_getinfo<\/a>( ctx , CURLINFO_SIZE_DOWNLOAD , &amp;statDouble ) ){\n            std::cout &lt;&lt; \"Download size:  \" &lt;&lt; statDouble &lt;&lt; \"bytes\" &lt;&lt; std::endl ;\n        }\n\n        \/\/ \n        if( CURLE_OK == <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_getinfo\">curl_easy_getinfo<\/a>( ctx , CURLINFO_SPEED_DOWNLOAD , &amp;statDouble ) ){\n            std::cout &lt;&lt; \"Download speed: \" &lt;&lt; statDouble &lt;&lt; \"bytes\/sec\" &lt;&lt; std::endl ;\n        }\n\n    }\n\n    \/\/ cleanup\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_cleanup\">curl_easy_cleanup<\/a>( ctx ) ;\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_global_cleanup\">curl_global_cleanup<\/a>() ;\n\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( 0 ) ;\n\n} \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=main\">main<\/a>()<\/pre>\n<form action=\"http:\/\/web.kunsan.ac.kr\/modules\/moniwiki\/down.php\" method=\"post\"><input type=\"submit\" value=\"\ub2e4\uc6b4\ub85c\ub4dc : httpget.cc\" \/><\/form>\n<div>\n<h2><a id=\"s-4\" name=\"s-4\"><\/a><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/Web\/documents\/UsedCurl#toc\">4<\/a>\u00a0FTP Download: FTP \ub370\uc774\ud130 \ub2e4\uc6b4\ub85c\ub4dc<\/h2>\n<div>\ud604\uc7ac\ub294 \uc6f9\uc11c\ube44\uc2a4\ub97c \ud1b5\ud574\uc11c \ub370\uc774\ud130\ub97c \uc5bb\ub294 \uacbd\uc6b0\uac00 \uc555\ub3c4\uc801\uc774\uc9c0\ub9cc, \uc5ec\uc804\ud788 FTP\ub294 \ub370\uc774\ud130\uc758 \uc804\uc1a1\uc744 \uc704\ud55c \uc6a9\ub3c4\ub85c \ub110\ub9ac \uc0ac\uc6a9\ub418\uace0 \uc788\ub2e4.<\/p>\n<div>FTP\ub294 script\uc758 \uc791\uc131\uc744 \ud1b5\ud574\uc11c \uc77c\uad04\uc791\uc5c5 \ud615\uc2dd\uc73c\ub85c \ud30c\uc77c\uc744 \uc5c5\/\ub2e4\uc6b4\ub85c\ub4dc \ud558\ub294 \ud615\ud0dc\ub85c \uc0ac\uc6a9\ub420 \uc218 \uc788\ub2e4. \uc774\ub7ec\ud55c \uc77c\uc744 \ud558\ub294 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc791\uc131\ud558\uae30 \uc704\ud574\uc11c\ub294\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=expect\">expect<\/a>\uc640 \uac19\uc740 \ud234\uc744 \uc774\uc6a9\ud574\uc57c \ud558\ub294\ub370, \uc81c\ub300\ub85c \uc791\ub3d9\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc9dc\uae30\ub780 \uc5ec\uac04 \uc5b4\ub824\uc6b4\uac8c \uc544\ub2c8\ub2e4. \uc11c\ubc84\uc758 \ud2b9\uc131\uc5d0 \ub530\ub77c\uc11c \ud504\ub85c\uadf8\ub798\ubc0d \uae30\ubc95\uc774 \ub2ec\ub77c\uc838\uc57c \ud558\uba70, \ud2b9\ud788 \uc5d0\ub7ec\ucc98\ub9ac\uac00 \ub9e4\uc6b0 \ud798\ub4e4\uae30 \ub54c\ubb38\uc774\ub2e4. (ncftp\uc640 \uac19\uc740 \ud504\ub85c\uadf8\ub7a8\uc740 \uc2a4\ud06c\ub9bd\ud2b8 \ud615\ud0dc\ub85c \uc0ac\uc6a9\uac00\ub2a5\ud55c\u00a0<strong>ncftpput<\/strong>,\u00a0<em>ncftpget<\/em>&#8216;\uacfc \uac19\uc740 \ud234\uc744 \uc81c\uacf5\ud55c\ub2e4.)<\/p>\n<div>httpget.cc\uc640 \uc911\ubcf5\ub418\ub294 \ub0b4\uc6a9\ub4e4\uc740 \ube7c\uace0 \uc124\uba85\ud558\ub3c4\ub85d \ud558\uaca0\ub2e4. \uc774 \ud504\ub85c\uadf8\ub7a8\uc740 \uc6d0\uaca9\uc9c0\uc758 \ud30c\uc77c\uc744 \ub85c\uceec\uc5d0 \uc800\uc7a5\ud558\uc9c0\ub294 \uc54a\ub294\ub2e4. \ud30c\uc77c\uc744 \uc77d\uc5b4\ub4e4\uc774\uace0, \uadf8 \ud06c\uae30\ub9cc \ucd9c\ub825\uc744 \ud55c\ub2e4.<\/p>\n<pre>size_t <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=showSize\">showSize<\/a>(...);\ncurl_esay_setopt(ctx, CURLOPT_WRITEFUNCTION, showSize);<\/pre>\n<p><strong>CURLOPT_WRITEFUNCTION<\/strong>\uc740 \uc6d0\uaca9\uc9c0 \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc \ud560\uaed8 \ud638\ucd9c\ud560 \ud568\uc218\ub97c \uc815\uc758\ud558\uae30 \uc704\ud574\uc11c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n<div>\uc774\uc81c \ub2e4\uc6b4\ub85c\ub4dc\ud560 \ud30c\uc77c\uac2f\uc218\ub9cc\ud07c for\ub8e8\ud504\ub97c \ub3cc\uba74\uc11c \ud30c\uc77c\uc744 \ub2e4\uc6b4\ubc1b\ub294\ub2e4. \uc6b0\uc120 CURLOPT_URL\uc744 \uc774\uc6a9\ud574\uc11c \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud560 \uc11c\ubc84\uc774\ub984\uc744 \uc815\ud574\uc900\ub2e4. CURLOPT_WRIDATE \ub294 CURLOPT_WRITEFUNCTION\ub97c \uc774\uc6a9\ud574\uc11c \uc815\uc758\ub41c \ucf5c\ubc31\ud568\uc218 &#8211;\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=showSize\">showSize<\/a>() -\ub97c \ud560\ub2f9\ud574\uc11c \uc778\uc790\ub85c \uc8fc\uc5b4\uc9c4 XferInfo\uac1d\uccb4\uc5d0 \ub370\uc774\ud130\ub97c \uc4f4\ub2e4.<\/p>\n<pre>class XferInfo\n{\n    void <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=add\">add<\/a>(int more);\n    int <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=getBytesTransferred\">getBytesTransferred<\/a>();\n    int <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=getTimesCalled\">getTimesCalled<\/a>();\n};\n...\n\nXferInfo info;\ncurl_easy_setopt(ctx, CURLOPT_WRITEDATA, &amp;info);<\/pre>\n<div>\uadf8\ub7fc \uc2e4\uc9c8\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \ubc1b\uc544\uc11c \ucc98\ub9ac\ud558\ub294 showSize \ucf5c\ubc31\ud568\uc218\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uc790.<\/p>\n<pre>extern \"C\"\nsize_t showSize\n{\n    void *source,\n    size_t size,\n    size_t nmemb,\n    void *userData\n}<\/pre>\n<div><strong>source<\/strong>\ub294 \uc77d\uc5b4\ub4e4\uc778 \uc2e4\uc81c \ub370\uc774\ud130\ub2e4. \uc77d\uc5b4\ub4e4\uc778 \ub370\uc774\ud130\ub294\u00a0<strong>NULL<\/strong>\uc744 \ud3ec\ud568\ud558\ub294 \uc774\uc9c4\ub370\uc774\ud130\uac00 \ub420 \uc218 \uc788\uc73c\ubbc0\ub85c, char *\ud615 \ub300\uc2e0 void * \ud615\uc744 \uc0ac\uc6a9\ud588\ub2e4. \uc77d\uc5b4\ub4e4\uc77c \ub370\uc774\ud130\uc758 \ud06c\uae30\ub294\u00a0<strong>size*nmemb<\/strong>\ub97c \ud1b5\ud574 \uacc4\uc0b0\ud55c\ub2e4.<\/p>\n<div><strong>userData<\/strong>\ub294 CURLOPT_WRITEDATA \uc5d0 \uc758\ud574\uc11c \ud560\ub2f9\ub41c, \uc790\ub8cc\uad6c\uc870\ub85c \uc6b0\ub9ac\ub294 \uc5ec\uae30\uc5d0 \ud544\uc694\ud55c \uc815\ubcf4 &#8211; \uc77d\uc5b4\ub4e4\uc778 \ud30c\uc77c\uc758 \ud06c\uae30 &#8211; \ub97c \uc801\uc744 \uac83\uc774\ub2e4.\u00a0<strong>userData<\/strong>\uc790\ub8cc\uad6c\uc870 \ub300\uc2e0\uc5d0 \ud30c\uc77c\uc5d0 \uc4f0\uae38 \uc6d0\ud55c\ub2e4\uba74 FILE *\uc744 \ub118\uae30\uba74 \ub41c\ub2e4.\u00a0<strong>usrData<\/strong>\ub294\u00a0<strong>void *<\/strong>\ud615\uc774\ubbc0\ub85c \ubc18\ub4dc\uc2dc \uce90\uc2a4\ud2b8 \ud574\uc8fc\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<pre>extern \"C\"\nsize_t <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=showSize\">showSize<\/a>(...)\n{\n    XferInfo *info = static_cast&lt;XferInfo *&gt;(userData);\n    const int bufferSize = size * nmemb;\n    info-&gt;<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=add\">add<\/a>(bufferSize);\n}<\/pre>\n<p>\uc774\uc81c \uc6b0\ub9ac\uac00 \ub9cc\ub4e0 \ucf5c\ubc31\ud568\uc218\ub294 \uc77d\uc5b4\ub4e4\uc778 \ud30c\uc77c\uc758 \ud06c\uae30\ub97c (size*nmemb)\ub85c \uacc4\uc0b0\ud574\uc11c \ub418\ub3cc\ub824\uc904 \uac83\uc774\ub2e4. \ub610\ud55c \uc774 \ud568\uc218\ub294 bufferSize\ub97c \ub418\ub3cc\ub824\uc8fc\uac8c \ub418\ub294\ub370, libCURL\uc740 \ucf5c\ubc31\ud568\uc218\uc758 \ub9ac\ud134\uac12\uacfc \uc804\uc1a1\ubc1b\uc740 \uc2e4\uc81c \ub370\uc774\ud130\uc758 \ud06c\uae30\ub97c \ube44\uad50\ud574\uc11c \ud2c0\ub9b4\uacbd\uc6b0 0\uc744 \ub9ac\ud134\ud574\uc8fc\uac8c \ub41c\ub2e4. \uc774\ub7f0\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc815\uc0c1\uc801\uc73c\ub85c \ubc1b\uc558\ub294\uc9c0\ub97c \uccb4\ud06c\ud560 \uc218 \uc788\ub2e4.<\/p>\n<div>\uc774\uc81c curl_easy_perform\uc744 \uc774\uc6a9\ud574\uc11c URL\uc5d0 \uc5f0\uacb0\ud574\uc11c \ub370\uc774\ud130\ub97c \ubc1b\uc544\uc624\uace0 \ucf5c\ubc31\ud568\uc218\ub97c \uc2e4\ud589\uc2dc\ud0a4\uba74 \ub41c\ub2e4.<\/p>\n<pre>\/*\n\nsample for O'ReillyNet article on libcURL:\n    {TITLE}\n    {URL}\n    AUTHOR: Ethan McCallum\n\nanon ftp\/download (scenario: fetch remote file)\n\n\uc774 \ucf54\ub4dc\ub294 Ubuntu \ub9ac\ub205\uc2a4 Kernel 2.6.15\uc5d0\uc11c\nlibcURL \ubc84\uc83c 7.15.1\ub85c \ud14c\uc2a4\ud2b8 \ub418\uc5c8\ub2e4.\n2006\ub144 8\uc6d4 3\uc77c\n\n*\/\n\n#include&lt;iostream&gt;\n#include&lt;string&gt;\n#include&lt;sstream&gt;\n#include&lt;list&gt;\n\nextern \"C\" {\n    #include&lt;curl\/curl.h&gt;\n}\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\ntypedef std::list&lt; std::string &gt; FileList ;\n\nenum {\n    ERROR_ARGS = 1 ,\n    ERROR_CURL_INIT = 2\n} ;\n\nenum {\n    OPTION_FALSE = 0 ,\n    OPTION_TRUE = 1\n} ;\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\n\/\/ \ucf5c\ubc31\ud568\uc218\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc0ac\uc6a9\uc790 \uc815\uc758 \uac1d\uccb4 \nclass XferInfo {\n\n    private:\n    int bytesTransferred_ ;\n    int invocations_ ;\n\n    protected:\n    \/\/ empty\n\n    public:\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=XferInfo\">XferInfo<\/a>(){\n\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=reset\">reset<\/a>() ;\n\n    } \/\/ ctor\n\n    \/\/\/ reset counters\n    void <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=reset\">reset<\/a>(){\n\n        bytesTransferred_ = 0 ;\n        invocations_ = 0 ;\n\n        return ;\n\n    } \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=reset\">reset<\/a>()\n\n    \/\/\/ add the number of bytes transferred in this call\n    void <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=add\">add<\/a>( int more ){\n\n        bytesTransferred_ += more ;\n        ++invocations_ ;\n\n        return ;\n\n    } \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=add\">add<\/a>()    \n\n    \/\/\/ get the amount of data transferred, in bytes\n    int <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=getBytesTransferred\">getBytesTransferred<\/a>() const {\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( bytesTransferred_ ) ;\n    } \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=getBytesTransferred\">getBytesTransferred<\/a>()\n\n    \/\/\/ get the number of times <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=add\">add<\/a>() has been called\n    int <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=getTimesCalled\">getTimesCalled<\/a>(){\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( invocations_ ) ;\n    } \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=getTimesCalled\">getTimesCalled<\/a>()\n} ;\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\n\/\/ C++ \uc5d0\uc11c C\ud568\uc218\ub97c \ub9c1\ud06c\uc2dc\ud0a4\uae30 \uc704\ud574\uc11c\ub294, \"extern C\"\ub97c \uc774\uc6a9\ud574\uc57c \ud55c\ub2e4.\nextern \"C\"\nsize_t <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=showSize\">showSize<\/a>( void *source , size_t size , size_t nmemb , void *userData ){\n\n    \/\/ this function may be called any number of times for even a single\n    \/\/ transfer; be sure to write it accordingly.\n\n    \/\/ source is the actual data fetched by libcURL; cast it to whatever\n    \/\/ type you need (usually char*).  It has NO terminating NULL byte.\n\n    \/\/ we don't touch the data here, so the cast is commented out\n    \/\/ const char* data = static_cast&lt; const char* &gt;( source ) ;\n\n    \/\/ userData is called \"stream\" in the docs, which is misleading:\n    \/\/ that parameter can be _any_ data type, not necessarily a FILE*\n    \/\/ Here, we use it to save state between calls to this function\n    \/\/ and track number of times this callback is invoked.\n    XferInfo* info = static_cast&lt; XferInfo* &gt;( userData ) ;\n\n    const int bufferSize = size * nmemb ;\n\n    std::cout &lt;&lt; 't' &lt;&lt; <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=\">\"showSize<\/a>() called: \" &lt;&lt; bufferSize &lt;&lt; \" bytes passed\" &lt;&lt; std::endl ;\n\n    \/\/ ... pretend real data processing on *source happens here ...\n\n    info-&gt;<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=add\">add<\/a>( bufferSize ) ;\n\n    \/*\n    return some number less than bufferSize to indicate an\n    error (xfer abort)\n\n    nicer code would also set a status var (in userData) for the\n    calling function\n    *\/\n\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( bufferSize ) ;\n\n} \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=showSize\">showSize<\/a>()\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\nint <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=main\">main<\/a>( const int argc , const char** argv ){\n\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=if\">if<\/a>( argc &lt; 3 ){\n        std::cerr &lt;&lt; \"test of libcURL: anonymous FTP\" &lt;&lt; std::endl ;\n        std::cerr &lt;&lt; \" Usage: \" &lt;&lt; argv[0] &lt;&lt; \" {server} {file1} [{file2} ...]\" &lt;&lt; std::endl ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( ERROR_ARGS ) ;\n    }\n\n    \/\/ remote FTP server\n    const char* server = argv[1] ;\n\n    const int totalTargets = argc - 2 ;\n\n    std::cout &lt;&lt; \"Attempting to download \" &lt;&lt; totalTargets\n        &lt;&lt; \" files from \" &lt;&lt; server &lt;&lt; std::endl\n    ;\n\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_global_init\">curl_global_init<\/a>( CURL_GLOBAL_ALL ) ;\n\n    CURL* ctx = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_init\">curl_easy_init<\/a>() ;\n\n    if( NULL == ctx ){\n        std::cerr &lt;&lt; \"Unable to initialize cURL interface\" &lt;&lt; std::endl ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( ERROR_CURL_INIT ) ;\n    }\n\n    \/* BEGIN: global handle options *\/\n\n    \/\/ handy for debugging: see *everything* that goes on\n    \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_VERBOSE, OPTION_TRUE ) ;\n\n    \/\/ no progress bar:\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_NOPROGRESS , OPTION_TRUE ) ;\n\n    \/\/ what to do with returned data\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_WRITEFUNCTION , showSize ) ;\n\n    XferInfo info ;\n\n    for(\n        int ix = 2 ;\n        ix &lt; argc ;\n        ++ix\n    ){\n\n        const char* item = argv[ ix ] ;\n\n        \/\/ zero counters for each file\n        info.reset() ;\n\n        \/\/ target url: concatenate the server and target file name\n        urlBuffer.str( \"\" ) ;\n        urlBuffer &lt;&lt; \"ftp:\/\/\" &lt;&lt; server &lt;&lt; \"\/\" &lt;&lt; item &lt;&lt; std::flush ;\n\n        std::cout &lt;&lt; \"Trying \" &lt;&lt; urlBuffer.str() &lt;&lt; std::endl ;\n\n        const std::string url = urlBuffer.str() ;\n\n        curl_easy_setopt( ctx , CURLOPT_URL,  url.c_str() ) ;\n\n        \/\/ set the write function's user-data (state data)\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_WRITEDATA , &amp;info ) ;\n\n        \/\/ action!\n\n        const CURLcode rc = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_perform\">curl_easy_perform<\/a>( ctx ) ;\n\n        \/\/ for curl v7.11.x and earlier, look into\n        \/\/ curl_easy_setopt( ctx , CURLOPT_ERRORBUFFER , \/* char array *\/ ) ;\n        if( CURLE_OK == rc ){\n            std::cout &lt;&lt; 't' &lt;&lt; \"xfer size: \" &lt;&lt; info.getBytesTransferred() &lt;&lt; \" bytes\" &lt;&lt; std::endl ;\n            std::cout &lt;&lt; 't' &lt;&lt; \"Callback was invoked \" &lt;&lt; info.getTimesCalled() &lt;&lt; \" times for this file\" &lt;&lt; std::endl ;\n        } else {\n            std::cerr &lt;&lt; \"Error from cURL: \" &lt;&lt; <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_strerror\">curl_easy_strerror<\/a>( rc ) &lt;&lt; std::endl ;\n        }\n\n        std::cout &lt;&lt; std::endl ;\n\n    }\n\n    \/\/ cleanup\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_cleanup\">curl_easy_cleanup<\/a>( ctx ) ;\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_global_cleanup\">curl_global_cleanup<\/a>() ;\n\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( 0 ) ;\n\n} \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=main\">main<\/a>()<\/pre>\n<form action=\"http:\/\/web.kunsan.ac.kr\/modules\/moniwiki\/down.php\" method=\"post\"><input type=\"submit\" value=\"\ub2e4\uc6b4\ub85c\ub4dc : ftpget.cc\" \/><\/form>\n<div>\n<h2><a id=\"s-5\" name=\"s-5\"><\/a><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/Web\/documents\/UsedCurl#toc\">5<\/a>\u00a0FTP \uc5c5\ub85c\ub4dc<\/h2>\n<div>\uc774\ubc88\uc5d0 \ub9cc\ub4e4 \ud504\ub85c\uadf8\ub7a8\uc740 FTP \ud638\uc2a4\ud2b8\uc5d0 \uc5f0\uacb0\ud574\uc11c \ud30c\uc77c\uc744 Upload \ud558\ub294 \uc77c\uc744 \ud55c\ub2e4. FTP\ud638\uc2a4\ud2b8\uc5d0 \uc811\uadfc\ud558\uae30 \uc704\ud574\uc11c\ub294 host\uc758 \ub3c4\uba54\uc778 \uc774\ub984\uacfc \ub85c\uadf8\uc778\uc744 \uc704\ud55c \uc544\uc774\ub514\uc640 \ud328\uc2a4\uc6cc\ub4dc\uac00 \ud544\uc694\ud558\ub2e4. \uc81c\ub300\ub85c\ub41c \ud504\ub85c\uadf8\ub7a8\uc774\ub77c\uba74 \uc124\uc815\ud30c\uc77c\ub4f1\uc744 \ud1b5\ud574\uc11c \uc774\ub4e4 \uc815\ubcf4\ub97c \uc785\ub825\ubc1b\uc544\uc57c \uaca0\uc9c0\ub9cc, \uc5ec\uae30\uc5d0\uc11c\ub294 \ud3b8\uc758\uc0c1 \uc18c\uc2a4\ub0b4\uc5d0 \ud558\ub4dc\ucf54\ub529\ud558\ub3c4\ub85d \ud558\uaca0\ub2e4. \ud0c0\uac9f URL\uc5d0 file\uc744 \uc5c5\ub85c\ub4dc\ud558\ub294 \uac83\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uae30\uc220\ub41c\ub2e4.<\/p>\n<pre>ftp:\/\/host\/file<\/pre>\n<div>\ub85c\uadf8\uc778\uc744 \uc704\ud55c \uc544\uc774\ub514\uc640 \ud328\uc2a4\uc6cc\ub4dc\ub294\u00a0<strong>CURLOPT_USERPWD<\/strong>\ub97c \uc774\uc6a9\ud574\uc11c \uc124\uc815\ud560 \uc218 \uc788\ub2e4. \uc774\ub4e4 \uc815\ubcf4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uae30\uc220\ub420 \uac83\uc774\ub2e4.<\/p>\n<pre>login:password<\/pre>\n<div>\ucd5c\uc885\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc740 URL\uc815\ubcf4\ub97c \uac00\uc9c0\uac8c \ub41c\ub2e4.<\/p>\n<pre>ftp:\/\/login:password@host\/file<\/pre>\n<div>libCURL\uc740 \ud30c\uc77c\uc744 \uc804\uc1a1\ud558\ub294 \uac83 \ubfd0\ub9cc \uc544\ub2c8\ub77c. ftp\uc11c\ubc84\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\u00a0<strong>mkdir<\/strong>\uacfc \uac19\uc740 \uba85\ub839\ub3c4 \ubb38\uc81c\uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \uc0ac\uc6a9\ud560 \uba85\ub839\uc740 curl_slist \uc5d0\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=%B8%B5%C5%A9%B5%E5%B8%AE%BD%BA%C6%AE\">\ub9c1\ud06c\ub4dc\ub9ac\uc2a4\ud2b8<\/a>\u00a0\ud615\ud0dc\ub85c \uc800\uc7a5\ud55c\ub2e4.<\/p>\n<pre>struct curl_slist *command=NULL;\ncommand = curl_slist_append( commands, \"mkdir \/some\/path\");\ncommand = curl_slist_append( commands, \"mkdir \/another\/path\");<\/pre>\n<p>\ubb3c\ub860 \uc774\ub4e4 \uba85\ub839\uc774 \uc2e4\ud589\ud558\uae30 \uc704\ud574\uc11c\ub294 \ub85c\uadf8\uc778 \uacfc\uc815\uc744 \uc6b0\uc120 \uac70\uccd0\uc57c \ud560 \uac83\uc774\ub2e4. \uc774\uc81c CURLOPT_QUOTE\ub97c \uc774\uc6a9\ud574\uc11c \uba85\ub839\uc744 \ub4f1\ub85d\uc2dc\ud0a4\uba74 \ub41c\ub2e4.<\/p>\n<pre>curl_easy_setopt(ctx, CURLPOST_QUOTE, commands);\n\/\/ curl_easy_perform\uc744 \uc774\uc6a9\ud574\uc11c ftp \uc138\uc158\uc744 \uc2dc\uc791\ud558\uace0\n\/\/ \uba85\ub839\uc744 \uc2e4\ud589\ud55c\ub2e4.\ncurl_slist_free_all(command);<\/pre>\n<div>\n<h2><a id=\"s-6\" name=\"s-6\"><\/a><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/Site\/Web\/documents\/UsedCurl#toc\">6<\/a>\u00a0HTTP POST<\/h2>\n<div><a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=HTTP\">HTTP<\/a>\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=POST\">POST<\/a>\ub294 \uc6f9\uc744 \ud1b5\ud574\uc11c \ud3fc\ub370\uc774\ud130\ub97c \uc8fc\uace0\ubc1b\uae30 \uc704\ud55c \ub370\uc774\ud130 \uc804\uc1a1\ubc29\ubc95\uc758 \ud558\ub098\ub2e4. \uc774 \ubb38\uc11c\uc758 \ub9c8\uc9c0\ub9c9 \uc608\uc81c\ub85c libCURL\uc744 \uc774\uc6a9\ud574\uc11c HTTP POST \ud615\uc2dd\uc758 \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uaca0\ub2e4. \ub610\ud55c \uc0ac\uc6a9\uc790\uc815\uc758\ub41c HTTP header\ub3c4 \ud14c\uc2a4\ud2b8\ud558\ub3c4\ub85d \ud558\uaca0\ub2e4. \uc644\uc804\ud55c \ud14c\uc2a4\ud2b8\ub97c \uc704\ud574\uc11c\ub294 \uc6f9\uc11c\ubc84\uac00 \uad6c\ucd95\ub418\uc5b4 \uc788\uc5b4\uc57c \ud560 \uac83\uc774\ub2e4.<\/p>\n<div>POST\ub85c \ubcf4\ub0b4\ub294 \ub370\uc774\ud130\ub294\u00a0<strong>key=value<\/strong>\ud615\ud0dc\ub85c \ub418\uc5b4 \uc788\uc73c\uba70, \uac01\uac01\uc758\u00a0<strong>key=value<\/strong>\u00a0\ub294\u00a0<strong>&amp;<\/strong>\ub97c \ud1b5\ud574\uc11c \uad6c\ubd84\ub41c\ub2e4.<\/p>\n<pre>const char* postData=\"param1=value1\u00b6m2=value2&amp;...\";<\/pre>\n<p>POST \ub370\uc774\ud130 \uc804\uc1a1\uc744 \uc704\ud574\uc11c\u00a0<strong>CURLOPT_POSTFIELDS<\/strong>\uc635\uc158\uc744 \uc124\uc815\ud558\uba74 \ub41c\ub2e4.<\/p>\n<pre>curl_easy_setopt(ctx, CURLOPT_POSTFIELDS, postData);<\/pre>\n<div>\uc774\uc81c\u00a0<strong>CURLOPT_HTTPHEADER<\/strong>\ub97c \uc774\uc6a9\ud574\uc11c \uc0ac\uc6a9\uc790\uc815\uc758 HTTP \ud5e4\ub354\ub97c \ub9cc\ub4e4\ub3c4\ub85d \ud55c\ub2e4.<\/p>\n<pre>curl_sist * responseHeaders=NULL;\n\nresponseHeaders = curl_slist_append(\n    responseHeaders,\n    \"Expect: 100-continue\"\n);\n\ncurl_easy_setopt(ctx, CURLOPT_HTTPHEADER, responseHeaders);<\/pre>\n<p>\uc8fc\uc758 \ud560\uac83\uc740 libCURL\uc740 hidden \ud544\ub4dc\ub098\u00a0<a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=JavaScript\">JavaScript<\/a>\uc640 \uac19\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8\uce21\uc758 \uae30\uc220\ub4e4\uc744 \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud55c\ub2e4\ub294 \uc810\uc774\ub2e4. \uc608\ub97c\ub4e4\uc5b4 \ud3fc\uc785\ub825\uc744 \ud558\uace0\ub098\uc11c\u00a0<strong>submit<\/strong>\ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \ud3fc\uc758 \uac01 \ud544\ub4dc\ub97c \uac80\uc0ac\ud558\ub294 \ub4f1\uc758 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub4f1\uc740 \ucc98\ub9ac\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n<div>\n<pre>\/*\n\nsample for O'ReillyNet article on libcURL:\n    {TITLE}\n    {URL}\n    AUTHOR: Ethan McCallum\n\nHTTP POST (e.g. form processing or REST web services)\n\n\uc774 \ucf54\ub4dc\ub294 Ubuntu 6.06 Dapper Drake,  \nlibcURL\nThis code was built\/tested under Fedora Core 3,\nlibcURL version 7.12.3 \ud658\uacbd\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ub418\uc5c8\ub2e4.\n*\/\n\n#include&lt;cstdio&gt;\n#include&lt;iostream&gt;\n#include&lt;string&gt;\n#include&lt;sstream&gt;\n\nextern \"C\" {\n    #include&lt;curl\/curl.h&gt;\n}\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\nenum {\n    ERROR_ARGS = 1 ,\n    ERROR_CURL_INIT = 2\n} ;\n\nenum {\n    OPTION_FALSE = 0 ,\n    OPTION_TRUE = 1\n} ;\n\nenum {\n    FLAG_DEFAULT = 0 \n} ;\n\nconst char* targetUrl ;\n\n\/\/ - - - - - - - - - - - - - - - - - - - -\n\nint <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=main\">main<\/a>( int argc , char** argv ){\n\n    if( argc != 2 ){\n        std::cerr &lt;&lt; \"test of libcURL: test an HTTP post\" &lt;&lt; std::endl ;\n        std::cerr &lt;&lt; <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=\">\"<\/a>(post data is canned)\" &lt;&lt; std::endl ;\n        std::cerr &lt;&lt; \" Usage: \" &lt;&lt; argv[0] &lt;&lt; \" {post url}\" &lt;&lt; std::endl ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=std::exit\">std::exit<\/a>( ERROR_ARGS ) ;\n    }\n\n    targetUrl = argv[1] ;\n\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_global_init\">curl_global_init<\/a>( CURL_GLOBAL_ALL ) ;\n\n    CURL* ctx = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_init\">curl_easy_init<\/a>() ;\n\n    if( NULL == ctx ){\n        std::cerr &lt;&lt; \"Unable to initialize cURL interface\" &lt;&lt; std::endl ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=return\">return<\/a>( ERROR_CURL_INIT ) ;\n    }\n\n    \/* BEGIN: configure the handle: *\/\n\n    \/\/ Target URL: \n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_URL,  targetUrl ) ;\n    \/\/ no progress bar:\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_NOPROGRESS , OPTION_TRUE ) ;\n\n    \/\/ \uc751\ub2f5\ub370\uc774\ud130\ub97c \ud45c\uc900\ucd9c\ub825\uc73c\ub85c \ubcf4\ub0b8\ub2e4. \n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_WRITEDATA , stdout ) ;\n\n    \/\/ \uc0ac\uc6a9\uc790 \uc815\uc758 HTTP \ud5e4\ub354: create a linked list and assign\n    curl_slist* responseHeaders = NULL ;\n    responseHeaders = curl_slist_append( responseHeaders , \"Expect: 100-continue\" ) ;\n    responseHeaders = curl_slist_append( responseHeaders , \"User-Agent: Some Custom App\" ) ;\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_HTTPHEADER , responseHeaders ) ;\n\n    \/\/ POST Data \uc124\uc815 \n    \/\/ notice the URL-unfriendly characters (such as \"%\" and \"&amp;\")\n    \/\/ URL\uc5d0\uc11c\ub294 '%', '&amp;', ' '\uc640 \uac19\uc740 \ubb38\uc790\ub97c URL encoding \uc2dc\ucf1c\uc918\uc57c \ud55c\ub2e4.\n    \/\/ curl_escape \ud568\uc218\ub97c \uc774\uc6a9\ud574\uc11c \uc778\ucf54\ub529\ud560 \uc218 \uc788\ub2e4. \n    const char* postParams[] = {\n        \"One\"      , \"this has % and &amp; symbols\" ,\n        \"Dos\"      , \"value with spaces\" ,\n        \"Trois\"    , \"plus+signs+will+be+escaped\" ,\n        \"Chetirye\" , \"fourth param...\" ,\n        NULL\n    } ; \n\n    \/\/ buffer for the POST params\n    std::ostringstream postBuf ;\n\n    const char** postParamsPtr = postParams ;\n\n    while( NULL != *postParamsPtr )\n    {\n        \/\/ curl_escape( {string} , 0 ): replace special characters\n        \/\/ (such as space, \"&amp;\", \"+\", \"%\") with HTML entities.\n        \/\/ ( 0 =&gt; \"use strlen to find string length\" )\n        \/\/ remember to call <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_free\">curl_free<\/a>() on the strings on the way out\n        char* key = curl_escape( postParamsPtr[0] , FLAG_DEFAULT ) ;\n        char* val = curl_escape( postParamsPtr[1] , FLAG_DEFAULT )  ;\n\n        std::cout &lt;&lt; \"Setting POST param: \"\" &lt;&lt; key &lt;&lt; \"\" =&gt; \"\" &lt;&lt; val &lt;&lt; \"\"\" &lt;&lt; std::endl ;\n        postBuf &lt;&lt; key &lt;&lt; \"=\" &lt;&lt; val &lt;&lt; \"&amp;\" ;\n\n        postParamsPtr += 2 ;\n\n        \/\/ the cURL lib allocated the escaped versions of the\n        \/\/ param strings; we must free them here\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_free\">curl_free<\/a>( key ) ;\n        <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_free\">curl_free<\/a>( val ) ;\n\n    }\n    postBuf &lt;&lt; std::flush ;\n\n    \/\/ We can't really call \"postBuf.str().c_str()\" here, because\n    \/\/ the std::string created in the middle is a temporary.  In turn,\n    \/\/ the char* buf from its <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=c_str\">c_str<\/a>() operation isn't guaranteed to\n    \/\/ be around after the function call.\n    \/\/ The solution: explicitly create the string.\n\n    \/\/ Larger (and\/or better) code would use <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=std::string::copy\">std::string::copy<\/a>() to create\n    \/\/ a const char* pointer to pass to cURL, then clean it up later.\n    \/\/ e.g.:\n    \/\/    const char* postData = new char*[ 1 + postBuf.tellg() ] ;\n    \/\/     postBuf.str().copy( postData , std::string::npos ) ;\n    \/\/  postData[ postBuf.tellg() ] == '' ;\n    const std::string postData = postBuf.str() ;\n\n    std::cout &lt;&lt; \"post data: \" &lt;&lt; postData &lt;&lt; std::endl ;\n    curl_easy_setopt( ctx , CURLOPT_POSTFIELDS , postData.c_str() ) ;\n\n    \/\/ do a standard HTTP POST op\n    \/\/ in theory, this is automatically set for us by setting\n    \/\/ CURLOPT_POSTFIELDS...\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_setopt\">curl_easy_setopt<\/a>( ctx , CURLOPT_POST , OPTION_TRUE ) ;\n\n    \/* END: configure the handle *\/\n    \/\/ action!\n    std::cout &lt;&lt; \"- - - BEGIN: response - - -\" &lt;&lt; std::endl ;\n    CURLcode rc = <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_perform\">curl_easy_perform<\/a>( ctx ) ;\n    std::cout &lt;&lt; \"- - - END: response - - -\" &lt;&lt; std::endl ;\n\n    \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=\">\"curl_easy_strerror<\/a>()\" available in curl v7.12.x and later\n    if( CURLE_OK != rc ){\n        std::cerr &lt;&lt; 't' &lt;&lt; \"Error from cURL: \" &lt;&lt; <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_strerror\">curl_easy_strerror<\/a>( rc ) &lt;&lt; std::endl ;\n    }\n\n    \/\/ cleanup\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_slist_free_all\">curl_slist_free_all<\/a>( responseHeaders ) ;\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_easy_cleanup\">curl_easy_cleanup<\/a>( ctx ) ;\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=curl_global_cleanup\">curl_global_cleanup<\/a>() ;\n    <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=std::exit\">std::exit<\/a>( 0 ) ;\n} \/\/ <a href=\"http:\/\/www.joinc.co.kr\/modules\/moniwiki\/wiki.php\/manSearch?google=none&amp;name=main\">main<\/a>()<\/pre>\n<form action=\"http:\/\/web.kunsan.ac.kr\/modules\/moniwiki\/down.php\" method=\"post\"><input type=\"submit\" value=\"\ub2e4\uc6b4\ub85c\ub4dc : httppost.cc\" \/><\/form>\n<div>\uc704 \ud504\ub85c\uadf8\ub7a8\uc758 \ud14c\uc2a4\ud2b8\ub97c \uc704\ud574\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 php\ud398\uc774\uc9c0\ub97c \ub9cc\ub4e4\uc5c8\ub2e4.<\/p>\n<pre>&lt;?\n    echo \"SERVER Ons      : $One&lt;br&gt;n\";\n    echo \"SERVER Dos      : $Dos&lt;br&gt;n\";\n    echo \"SERVER Trois    : $Trois&lt;br&gt;n\";\n    echo \"SERVER Chetirye : $Chetirye&lt;br&gt;n\";\n?&gt;<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; \uc124\uce58\ubc95 * cURL\uc5d0 \uad00\ud55c \uac1c\ub150 \uc815\ub9ac \ubc0f \uc608\uc81c http:\/\/web.kunsan.ac.kr\/~sharky\/blog\/?no=11 http:\/\/www.joinc.co.kr\/modules\/moniwiki\/\/wiki.php\/Site\/Web\/documents\/UsedCurl http:\/\/bluesunh.springnote.com\/pages\/1231250 * libcurl \uc0ac\uc6a9\ud558\uae30 1. \uc18c\uc2a4 \ub2e4\uc6b4\ub85c\ub4dc http:\/\/curl.haxx.se\/download.html\u00a0\uc5d0 \uc704\ucabd\uc5d0 Source Archives \uc911 \uc801\ub2f9\ud55c \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc\ud568. 2. \uc801\ub2f9\ud55c \uc704\uce58\uc5d0 \uc555\ucd95\uc744&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/1242"}],"collection":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1242"}],"version-history":[{"count":0,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/1242\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}