{"id":4066,"date":"2020-01-14T17:01:38","date_gmt":"2020-01-14T09:01:38","guid":{"rendered":"https:\/\/damogame.cn\/wordpress\/?p=4066"},"modified":"2020-01-14T17:01:38","modified_gmt":"2020-01-14T09:01:38","slug":"libcurl%e8%bf%9b%e8%a1%8c%e5%bc%82%e6%ad%a5%e5%b9%b6%e5%8f%91","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/4066","title":{"rendered":"libcurl\u8fdb\u884c\u5f02\u6b65\u5e76\u53d1"},"content":{"rendered":"<div class=\"article-header-box\">\n<div class=\"article-header\">\n<div class=\"article-title-box\">\n<p class=\"title-article\"><a href=\"https:\/\/blog.csdn.net\/whui19890911\/article\/details\/79320408\">\u539f\u6587\u5730\u5740<\/a><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"article-info-box\">\n<div class=\"article-bar-top\"><span class=\"article-type type-2 float-left\">\u8f6c\u8f7d<\/span><a class=\"follow-nickName\" href=\"https:\/\/me.csdn.net\/whui890911\" target=\"_blank\" rel=\"noopener noreferrer\">\u6df1\u6f02\u4e00\u733f<\/a>\u00a0<span class=\"time\">\u6700\u540e\u53d1\u5e03\u4e8e2018-02-13 10:37:46\u00a0<\/span><span class=\"read-count\">\u9605\u8bfb\u6570 3229<\/span>\u00a0<a id=\"blog_detail_zk_collection\" data-report-click=\"{&quot;mod&quot;:&quot;popu_823&quot;}\"><\/a>\u00a0\u6536\u85cf<\/div>\n<div class=\"operating\"><a class=\"href-article-edit slide-toggle\">\u5c55\u5f00<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<article class=\"baidu_pl\">\n<div id=\"article_content\" class=\"article_content clearfix\">\n<div id=\"content_views\" class=\"htmledit_views\">\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0libcurl\u7684easy \u63a5\u53e3\uff0ceasy\u63a5\u53e3\u7684\u4f7f\u7528\u975e\u5e38\u7684\u7b80\u5355\uff0ccurl_easy_init\u7528\u6765\u521d\u59cb\u5316\u4e00\u4e2aeasy curl\u5bf9\u8c61\uff0ccurl_easy_setopt\u5bf9easy curl\u5bf9\u8c61\u8fdb\u884c\u76f8\u5173\u8bbe\u7f6e\uff0c\u6700\u540ecurl_easy_perform\u6267\u884ccurl\u8bf7\u6c42\uff0c\u8fd4\u56de\u76f8\u5e94\u7ed3\u679c\u3002easy\u63a5\u53e3\u662f\u963b\u585e\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\u5fc5\u987b\u7b49\u5230\u4e0a\u4e00\u4e2acurl\u8bf7\u6c42\u6267\u884c\u5b8c\u540e\uff0c\u4e0b\u4e00\u4e2acurl\u8bf7\u6c42\u624d\u80fd\u7ee7\u7eed\u6267\u884c\uff0c\u5728\u4e00\u822c\u7684\u5e94\u7528\u573a\u5408\uff0c\u8fd9\u79cd\u963b\u585e\u7684\u8bbf\u95ee\u65b9\u5f0f\u662f\u6ca1\u6709\u95ee\u9898\u7684\uff0c\u4f46\u662f\u5f53\u7a0b\u5e8f\u9700\u8981\u8fdb\u884c\u591a\u6b21curl\u5e76\u53d1\u8bf7\u6c42\u7684\u65f6\u5019\uff0ceasy\u63a5\u53e3\u5c31\u65e0\u80fd\u4e3a\u529b\u4e86\uff0c\u8fd9\u4e2a\u65f6\u5019curl\u63d0\u4f9b\u7684multi\u63a5\u53e3\u5c31\u6d3e\u4e0a\u7528\u573a\u4e86.<\/p>\n<p>\u76f8\u6bd4\u800c\u8a00\uff0cmulti\u63a5\u53e3\u7684\u4f7f\u7528\u4f1a\u6bd4easy \u63a5\u53e3\u7a0d\u5fae\u590d\u6742\u70b9\uff0c\u6bd5\u7adfmulti\u63a5\u53e3\u662f\u4f9d\u8d56easy\u63a5\u53e3\u7684\uff0c\u9996\u5148\u7c97\u7565\u7684\u8bb2\u4e0b\u5176\u4f7f\u7528\u6d41\u7a0b\uff1acurl_multi _init\u521d\u59cb\u5316\u4e00\u4e2amulti curl\u5bf9\u8c61\uff0c\u4e3a\u4e86\u540c\u65f6\u8fdb\u884c\u591a\u4e2acurl\u7684\u5e76\u53d1\u8bbf\u95ee\uff0c\u6211\u4eec\u9700\u8981\u521d\u59cb\u5316\u591a\u4e2aeasy curl\u5bf9\u8c61\uff0c\u4f7f\u7528curl_easy_setopt\u8fdb\u884c\u76f8\u5173\u8bbe\u7f6e\uff0c\u7136\u540e\u8c03\u7528curl_multi _add_handle\u628aeasy curl\u5bf9\u8c61\u6dfb\u52a0\u5230multi curl\u5bf9\u8c61\u4e2d\uff0c\u6dfb\u52a0\u5b8c\u6bd5\u540e\u6267\u884ccurl_multi_perform\u65b9\u6cd5\u8fdb\u884c\u5e76\u53d1\u7684\u8bbf\u95ee\uff0c\u8bbf\u95ee\u7ed3\u675f\u540ecurl_multi_remove_handle\u79fb\u9664\u76f8\u5173easy curl\u5bf9\u8c61\uff0ccurl_easy_cleanup\u6e05\u9664easy curl\u5bf9\u8c61\uff0c\u6700\u540ecurl_multi_cleanup\u6e05\u9664multi curl\u5bf9\u8c61\u3002<\/p>\n<p>\u4e0a\u9762\u7684\u4ecb\u7ecd\u53ea\u662f\u7ed9\u5927\u5bb6\u4e00\u4e2a\u5927\u6982\u7684\u5370\u8c61\uff0c\u5b9e\u9645\u4f7f\u7528\u4e2d\u8fd8\u6709\u5f88\u591a\u7ec6\u8282\u9700\u8981\u6ce8\u610f\uff0c\u597d\u4e86\uff0c\u4ee3\u7801\u624d\u80fd\u8bf4\u660e\u4e00\u5207\uff0c\u4e0b\u9762\u7684\u4f8b\u5b50\u4f7f\u7528multi curl\u65b9\u5f0f\u8fdb\u884c\u591a\u6b21http\u5e76\u53d1\u8bbf\u95ee\uff0c\u5e76\u8f93\u51fa\u8bbf\u95ee\u7ed3\u679c\u3002<\/p>\n<p>&nbsp;<\/p>\n<div class=\"bar\">\n<div class=\"tools\">[cpp]\u00a0<a class=\"ViewSource\" title=\"view plain\" href=\"http:\/\/blog.csdn.net\/zxgfa\/article\/details\/8220724#\">view plain<\/a><a class=\"CopyToClipboard\" title=\"copy\" href=\"http:\/\/blog.csdn.net\/zxgfa\/article\/details\/8220724#\">copy<\/a><\/p>\n<div><\/div>\n<div><\/div>\n<div><embed id=\"ZeroClipboardMovie_1\" src=\"https:\/\/csdnimg.cn\/public\/highlighter\/ZeroClipboard.swf\" type=\"application\/x-shockwave-flash\" width=\"27\" height=\"16\" align=\"middle\" name=\"ZeroClipboardMovie_1\" data-mce-fragment=\"1\"><\/embed><\/div>\n<div><embed id=\"ZeroClipboardMovie_3\" src=\"https:\/\/csdnimg.cn\/public\/highlighter\/ZeroClipboard.swf\" type=\"application\/x-shockwave-flash\" width=\"27\" height=\"16\" align=\"middle\" name=\"ZeroClipboardMovie_3\" data-mce-fragment=\"1\"><\/embed><\/div>\n<\/div>\n<\/div>\n<ol class=\"dp-cpp\" start=\"1\">\n<li class=\"alt\"><span class=\"preprocessor\">#include\u00a0&lt;string&gt;<\/span><\/li>\n<li><span class=\"preprocessor\">#include\u00a0&lt;iostream&gt;<\/span><\/li>\n<li class=\"alt\"><\/li>\n<li><span class=\"preprocessor\">#include\u00a0&lt;curl\/curl.h&gt;<\/span><\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#include\u00a0&lt;sys\/time.h&gt;<\/span><\/li>\n<li><span class=\"preprocessor\">#include\u00a0&lt;unistd.h&gt;<\/span><\/li>\n<li class=\"alt\"><\/li>\n<li><span class=\"keyword\">using<\/span>\u00a0<span class=\"keyword\">namespace<\/span>\u00a0std;<\/li>\n<li class=\"alt\"><\/li>\n<li><span class=\"datatypes\">size_t<\/span>\u00a0curl_writer(<span class=\"keyword\">void<\/span>\u00a0*buffer,\u00a0<span class=\"datatypes\">size_t<\/span>\u00a0size,\u00a0<span class=\"datatypes\">size_t<\/span>\u00a0count,\u00a0<span class=\"keyword\">void<\/span>\u00a0*\u00a0stream)<\/li>\n<li class=\"alt\">{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0std::string\u00a0*\u00a0pStream\u00a0=\u00a0<span class=\"keyword\">static_cast<\/span>&lt;std::string\u00a0*&gt;(stream);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0(*pStream).append((<span class=\"datatypes\">char<\/span>\u00a0*)buffer,\u00a0size\u00a0*\u00a0count);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0size\u00a0*\u00a0count;<\/li>\n<li>};<\/li>\n<li class=\"alt\"><\/li>\n<li><span class=\"comment\">\/**<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0*\u00a0\u751f\u6210\u4e00\u4e2aeasy\u00a0curl\u5bf9\u8c61\uff0c\u8fdb\u884c\u4e00\u4e9b\u7b80\u5355\u7684\u8bbe\u7f6e\u64cd\u4f5c<\/span><\/li>\n<li><span class=\"comment\">\u00a0*\/<\/span><\/li>\n<li class=\"alt\">CURL\u00a0*\u00a0curl_easy_handler(<span class=\"keyword\">const<\/span>\u00a0std::string\u00a0&amp;\u00a0sUrl,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">const<\/span>\u00a0std::string\u00a0&amp;\u00a0sProxy,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0std::string\u00a0&amp;\u00a0sRsp,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0unsigned\u00a0<span class=\"datatypes\">int<\/span>\u00a0uiTimeout)<\/li>\n<li class=\"alt\">{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0CURL\u00a0*\u00a0curl\u00a0=\u00a0curl_easy_init();<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_URL,\u00a0sUrl.c_str());<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_NOSIGNAL,\u00a01);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(uiTimeout\u00a0&gt;\u00a00)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_TIMEOUT_MS,\u00a0uiTimeout);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(!sProxy.empty())<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_PROXY,\u00a0sProxy.c_str());<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0write\u00a0function\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_WRITEFUNCTION,\u00a0curl_writer);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_WRITEDATA,\u00a0&amp;sRsp);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0curl;<\/li>\n<li class=\"alt\">}<\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"comment\">\/**<\/span><\/li>\n<li><span class=\"comment\">\u00a0*\u00a0\u4f7f\u7528select\u51fd\u6570\u76d1\u542cmulti\u00a0curl\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\u72b6\u6001<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0*\u00a0\u76d1\u542c\u6210\u529f\u8fd4\u56de0\uff0c\u76d1\u542c\u5931\u8d25\u8fd4\u56de-1<\/span><\/li>\n<li><span class=\"comment\">\u00a0*\/<\/span><\/li>\n<li class=\"alt\"><span class=\"datatypes\">int<\/span>\u00a0curl_multi_select(CURLM\u00a0*\u00a0curl_m)<\/li>\n<li>{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0ret\u00a0=\u00a00;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">struct<\/span>\u00a0timeval\u00a0timeout_tv;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0fd_set\u00a0\u00a0fd_read;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0fd_set\u00a0\u00a0fd_write;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0fd_set\u00a0\u00a0fd_except;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0max_fd\u00a0=\u00a0-1;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u6ce8\u610f\u8fd9\u91cc\u4e00\u5b9a\u8981\u6e05\u7a7afdset,curl_multi_fdset\u4e0d\u4f1a\u6267\u884cfdset\u7684\u6e05\u7a7a\u64cd\u4f5c\u00a0\u00a0\/\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0FD_ZERO(&amp;fd_read);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0FD_ZERO(&amp;fd_write);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0FD_ZERO(&amp;fd_except);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u8bbe\u7f6eselect\u8d85\u65f6\u65f6\u95f4\u00a0\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0timeout_tv.tv_sec\u00a0=\u00a01;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0timeout_tv.tv_usec\u00a0=\u00a00;<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u83b7\u53d6multi\u00a0curl\u9700\u8981\u76d1\u542c\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u96c6\u5408\u00a0fd_set\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_multi_fdset(curl_m,\u00a0&amp;fd_read,\u00a0&amp;fd_write,\u00a0&amp;fd_except,\u00a0&amp;max_fd);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/**<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0When\u00a0max_fd\u00a0returns\u00a0with\u00a0-1,<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0you\u00a0need\u00a0to\u00a0wait\u00a0a\u00a0while\u00a0and\u00a0then\u00a0proceed\u00a0and\u00a0call\u00a0curl_multi_perform\u00a0anyway.<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0How\u00a0long\u00a0to\u00a0wait?\u00a0I\u00a0would\u00a0suggest\u00a0100\u00a0milliseconds\u00a0at\u00a0least,<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0but\u00a0you\u00a0may\u00a0want\u00a0to\u00a0test\u00a0it\u00a0out\u00a0in\u00a0your\u00a0own\u00a0particular\u00a0conditions\u00a0to\u00a0find\u00a0a\u00a0suitable\u00a0value.<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(-1\u00a0==\u00a0max_fd)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0-1;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/**<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u6267\u884c\u76d1\u542c\uff0c\u5f53\u6587\u4ef6\u63cf\u8ff0\u7b26\u72b6\u6001\u53d1\u751f\u6539\u53d8\u7684\u65f6\u5019\u8fd4\u56de<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u8fd4\u56de0\uff0c\u7a0b\u5e8f\u8c03\u7528curl_multi_perform\u901a\u77e5curl\u6267\u884c\u76f8\u5e94\u64cd\u4f5c<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u8fd4\u56de-1\uff0c\u8868\u793aselect\u9519\u8bef<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u6ce8\u610f\uff1a\u5373\u4f7fselect\u8d85\u65f6\u4e5f\u9700\u8981\u8fd4\u56de0\uff0c\u5177\u4f53\u53ef\u4ee5\u53bb\u5b98\u7f51\u770b\u6587\u6863\u8bf4\u660e<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0ret_code\u00a0=\u00a0::select(max_fd\u00a0+\u00a01,\u00a0&amp;fd_read,\u00a0&amp;fd_write,\u00a0&amp;fd_except,\u00a0&amp;timeout_tv);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">switch<\/span>(ret_code)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">case<\/span>\u00a0-1:<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0select\u00a0error\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ret\u00a0=\u00a0-1;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">break<\/span>;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">case<\/span>\u00a00:<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0select\u00a0timeout\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">default<\/span>:<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0one\u00a0or\u00a0more\u00a0of\u00a0curl&#8217;s\u00a0file\u00a0descriptors\u00a0say\u00a0there&#8217;s\u00a0data\u00a0to\u00a0read\u00a0or\u00a0write*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ret\u00a0=\u00a00;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">break<\/span>;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0ret;<\/li>\n<li>}<\/li>\n<li class=\"alt\"><\/li>\n<li><span class=\"preprocessor\">#define\u00a0MULTI_CURL_NUM\u00a03<\/span><\/li>\n<li class=\"alt\"><\/li>\n<li><span class=\"comment\">\/\/\u00a0\u8fd9\u91cc\u8bbe\u7f6e\u4f60\u9700\u8981\u8bbf\u95ee\u7684url\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">std::string\u00a0\u00a0\u00a0\u00a0\u00a0URL\u00a0\u00a0\u00a0\u00a0\u00a0=\u00a0<span class=\"string\">&#8220;http:\/\/website.com&#8221;<\/span>;<\/li>\n<li><span class=\"comment\">\/\/\u00a0\u8fd9\u91cc\u8bbe\u7f6e\u4ee3\u7406ip\u548c\u7aef\u53e3\u00a0\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">std::string\u00a0\u00a0\u00a0\u00a0\u00a0PROXY\u00a0\u00a0\u00a0=\u00a0<span class=\"string\">&#8220;ip:port&#8221;<\/span>;<\/li>\n<li><span class=\"comment\">\/\/\u00a0\u8fd9\u91cc\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\u00a0\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">unsigned\u00a0<span class=\"datatypes\">int<\/span>\u00a0\u00a0\u00a0\u00a0TIMEOUT\u00a0=\u00a02000;\u00a0<span class=\"comment\">\/*\u00a0ms\u00a0*\/<\/span><\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"comment\">\/**<\/span><\/li>\n<li><span class=\"comment\">\u00a0*\u00a0multi\u00a0curl\u4f7f\u7528demo<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0*\/<\/span><\/li>\n<li><span class=\"datatypes\">int<\/span>\u00a0curl_multi_demo(<span class=\"datatypes\">int<\/span>\u00a0num)<\/li>\n<li class=\"alt\">{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u521d\u59cb\u5316\u4e00\u4e2amulti\u00a0curl\u00a0\u5bf9\u8c61\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0CURLM\u00a0*\u00a0curl_m\u00a0=\u00a0curl_multi_init();<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0std::string\u00a0\u00a0\u00a0\u00a0\u00a0RspArray[num];<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0CURL\u00a0*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CurlArray[num];<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u8bbe\u7f6eeasy\u00a0curl\u5bf9\u8c61\u5e76\u6dfb\u52a0\u5230multi\u00a0curl\u5bf9\u8c61\u4e2d\u00a0\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">for<\/span>\u00a0(<span class=\"datatypes\">int<\/span>\u00a0idx\u00a0=\u00a00;\u00a0idx\u00a0&lt;\u00a0num;\u00a0++idx)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CurlArray[idx]\u00a0=\u00a0NULL;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CurlArray[idx]\u00a0=\u00a0curl_easy_handler(URL,\u00a0PROXY,\u00a0RspArray[idx],\u00a0TIMEOUT);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(CurlArray[idx]\u00a0==\u00a0NULL)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0-1;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_multi_add_handle(curl_m,\u00a0CurlArray[idx]);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u8c03\u7528curl_multi_perform\u51fd\u6570\u6267\u884ccurl\u8bf7\u6c42<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0url_multi_perform\u8fd4\u56deCURLM_CALL_MULTI_PERFORM\u65f6\uff0c\u8868\u793a\u9700\u8981\u7ee7\u7eed\u8c03\u7528\u8be5\u51fd\u6570\u76f4\u5230\u8fd4\u56de\u503c\u4e0d\u662fCURLM_CALL_MULTI_PERFORM\u4e3a\u6b62<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0running_handles\u53d8\u91cf\u8fd4\u56de\u6b63\u5728\u5904\u7406\u7684easy\u00a0curl\u6570\u91cf\uff0crunning_handles\u4e3a0\u8868\u793a\u5f53\u524d\u6ca1\u6709\u6b63\u5728\u6267\u884c\u7684curl\u8bf7\u6c42<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0running_handles;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">while<\/span>\u00a0(CURLM_CALL_MULTI_PERFORM\u00a0==\u00a0curl_multi_perform(curl_m,\u00a0&amp;running_handles))\/\/\/\/\u6267\u884c\u5e76\u53d1\u8bf7\u6c42\uff0c\u975e\u963b\u585e\uff0c\u7acb\u5373\u8fd4\u56de<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0running_handles\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/**<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u4e3a\u4e86\u907f\u514d\u5faa\u73af\u8c03\u7528curl_multi_perform\u4ea7\u751f\u7684cpu\u6301\u7eed\u5360\u7528\u7684\u95ee\u9898\uff0c\u91c7\u7528select\u6765\u76d1\u542c\u6587\u4ef6\u63cf\u8ff0\u7b26<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">while<\/span>\u00a0(running_handles)<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(-1\u00a0==\u00a0curl_multi_select(curl_m))<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cerr\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;select\u00a0error&#8221;<\/span>\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">break<\/span>;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0<span class=\"keyword\">else<\/span>\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0select\u76d1\u542c\u5230\u4e8b\u4ef6\uff0c\u8c03\u7528curl_multi_perform\u901a\u77e5curl\u6267\u884c\u76f8\u5e94\u7684\u64cd\u4f5c\u00a0\/\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">while<\/span>\u00a0(CURLM_CALL_MULTI_PERFORM\u00a0==\u00a0curl_multi_perform(curl_m,\u00a0&amp;running_handles))<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;select:\u00a0&#8220;<\/span>\u00a0&lt;&lt;\u00a0running_handles\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;select:\u00a0&#8220;<\/span>\u00a0&lt;&lt;\u00a0running_handles\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u8f93\u51fa\u6267\u884c\u7ed3\u679c\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0msgs_left;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0CURLMsg\u00a0*\u00a0\u00a0\u00a0msg;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">while<\/span>((msg\u00a0=\u00a0curl_multi_info_read(curl_m,\u00a0&amp;msgs_left)))<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(CURLMSG_DONE\u00a0==\u00a0msg-&gt;msg)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0idx;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">for<\/span>\u00a0(idx\u00a0=\u00a00;\u00a0idx\u00a0&lt;\u00a0num;\u00a0++idx)<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(msg-&gt;easy_handle\u00a0==\u00a0CurlArray[idx])\u00a0<span class=\"keyword\">break<\/span>;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(idx\u00a0==\u00a0num)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cerr\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;curl\u00a0not\u00a0found&#8221;<\/span>\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0<span class=\"keyword\">else<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;curl\u00a0[&#8220;<\/span>\u00a0&lt;&lt;\u00a0idx\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;]\u00a0completed\u00a0with\u00a0status:\u00a0&#8220;<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;&lt;\u00a0msg-&gt;data.result\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;rsp:\u00a0&#8220;<\/span>\u00a0&lt;&lt;\u00a0RspArray[idx]\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u8fd9\u91cc\u8981\u6ce8\u610fcleanup\u7684\u987a\u5e8f\u00a0\/\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">for<\/span>\u00a0(<span class=\"datatypes\">int<\/span>\u00a0idx\u00a0=\u00a00;\u00a0idx\u00a0&lt;\u00a0num;\u00a0++idx)<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_multi_remove_handle(curl_m,\u00a0CurlArray[idx]);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">for<\/span>\u00a0(<span class=\"datatypes\">int<\/span>\u00a0idx\u00a0=\u00a00;\u00a0idx\u00a0&lt;\u00a0num;\u00a0++idx)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_easy_cleanup(CurlArray[idx]);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_multi_cleanup(curl_m);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a00;<\/li>\n<li class=\"alt\">}<\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"comment\">\/**<\/span><\/li>\n<li><span class=\"comment\">\u00a0*\u00a0easy\u00a0curl\u4f7f\u7528demo<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0*\/<\/span><\/li>\n<li><span class=\"datatypes\">int<\/span>\u00a0curl_easy_demo(<span class=\"datatypes\">int<\/span>\u00a0num)<\/li>\n<li class=\"alt\">{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0std::string\u00a0\u00a0\u00a0\u00a0\u00a0RspArray[num];<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">for<\/span>\u00a0(<span class=\"datatypes\">int<\/span>\u00a0idx\u00a0=\u00a00;\u00a0idx\u00a0&lt;\u00a0num;\u00a0++idx)<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURL\u00a0*\u00a0curl\u00a0=\u00a0curl_easy_handler(URL,\u00a0PROXY,\u00a0RspArray[idx],\u00a0TIMEOUT);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLcode\u00a0code\u00a0=\u00a0curl_easy_perform(curl);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;curl\u00a0[&#8220;<\/span>\u00a0&lt;&lt;\u00a0idx\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;]\u00a0completed\u00a0with\u00a0status:\u00a0&#8220;<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;&lt;\u00a0code\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;rsp:\u00a0&#8220;<\/span>\u00a0&lt;&lt;\u00a0RspArray[idx]\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0clear\u00a0handle\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_easy_cleanup(curl);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a00;<\/li>\n<li class=\"alt\">}<\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#define\u00a0USE_MULTI_CURL<\/span><\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"keyword\">struct<\/span>\u00a0timeval\u00a0begin_tv,\u00a0end_tv;<\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"datatypes\">int<\/span>\u00a0main(<span class=\"datatypes\">int<\/span>\u00a0argc,\u00a0<span class=\"datatypes\">char<\/span>\u00a0*\u00a0argv[])<\/li>\n<li>{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>\u00a0(argc\u00a0&lt;\u00a02)<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0-1;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0num\u00a0=\u00a0atoi(argv[1]);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u83b7\u53d6\u5f00\u59cb\u65f6\u95f4\u00a0\/\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0gettimeofday(&amp;begin_tv,\u00a0NULL);<\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#ifdef\u00a0USE_MULTI_CURL<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u4f7f\u7528multi\u63a5\u53e3\u8fdb\u884c\u8bbf\u95ee\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_multi_demo(num);<\/li>\n<li><span class=\"preprocessor\">#else<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u4f7f\u7528easy\u63a5\u53e3\u8fdb\u884c\u8bbf\u95ee\u00a0\/\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_easy_demo(num);<\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#endif<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u83b7\u53d6\u7ed3\u675f\u65f6\u95f4\u00a0\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">struct<\/span>\u00a0timeval\u00a0end_tv;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0gettimeofday(&amp;end_tv,\u00a0NULL);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0\u8ba1\u7b97\u6267\u884c\u5ef6\u65f6\u5e76\u8f93\u51fa\uff0c\u7528\u4e8e\u6bd4\u8f83\u00a0\u00a0\/\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0eclapsed\u00a0=\u00a0(end_tv.tv_sec\u00a0&#8211;\u00a0begin_tv.tv_sec)\u00a0*\u00a01000\u00a0+<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(end_tv.tv_usec\u00a0&#8211;\u00a0begin_tv.tv_usec)\u00a0\/\u00a01000;<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0cout\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;eclapsed\u00a0time:&#8221;<\/span>\u00a0&lt;&lt;\u00a0eclapsed\u00a0&lt;&lt;\u00a0<span class=\"string\">&#8220;ms&#8221;<\/span>\u00a0&lt;&lt;\u00a0endl;<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a00;<\/li>\n<li class=\"alt\">}<\/li>\n<\/ol>\n<p>curl\u5b98\u7f51\u4e0a\u63d0\u4f9b\u7684\u6587\u4ef6\u4e0a\u4f20\u4f8b\u5b50:<\/p>\n<div class=\"bar\">\n<div class=\"tools\">[cpp]\u00a0<a class=\"ViewSource\" title=\"view plain\" href=\"http:\/\/blog.csdn.net\/zxgfa\/article\/details\/8302059#\">view plain<\/a><a class=\"CopyToClipboard\" title=\"copy\" href=\"http:\/\/blog.csdn.net\/zxgfa\/article\/details\/8302059#\">copy<\/a><\/p>\n<div><\/div>\n<div><\/div>\n<div><embed id=\"ZeroClipboardMovie_2\" src=\"https:\/\/csdnimg.cn\/public\/highlighter\/ZeroClipboard.swf\" type=\"application\/x-shockwave-flash\" width=\"27\" height=\"16\" align=\"middle\" name=\"ZeroClipboardMovie_2\" data-mce-fragment=\"1\"><\/embed><\/div>\n<div><embed id=\"ZeroClipboardMovie_4\" src=\"https:\/\/csdnimg.cn\/public\/highlighter\/ZeroClipboard.swf\" type=\"application\/x-shockwave-flash\" width=\"27\" height=\"16\" align=\"middle\" name=\"ZeroClipboardMovie_4\" data-mce-fragment=\"1\"><\/embed><\/div>\n<\/div>\n<\/div>\n<ol class=\"dp-cpp\" start=\"1\">\n<li class=\"alt\"><span class=\"comment\">\/*\u00a0This\u00a0is\u00a0an\u00a0example\u00a0application\u00a0source\u00a0code\u00a0using\u00a0the\u00a0multi\u00a0interface<\/span><\/li>\n<li><span class=\"comment\">\u00a0*\u00a0to\u00a0do\u00a0a\u00a0multipart\u00a0formpost\u00a0without\u00a0&#8220;blocking&#8221;.\u00a0*\/<\/span><\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#include\u00a0&lt;stdio.h&gt;<\/span><\/li>\n<li><span class=\"preprocessor\">#include\u00a0&lt;string.h&gt;<\/span><\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#include\u00a0&lt;sys\/time.h&gt;<\/span><\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"preprocessor\">#include\u00a0&lt;curl\/curl.h&gt;<\/span><\/li>\n<li><\/li>\n<li class=\"alt\"><span class=\"datatypes\">int<\/span>\u00a0main(<span class=\"keyword\">void<\/span>)<\/li>\n<li>{<\/li>\n<li class=\"alt\">\u00a0\u00a0CURL\u00a0*curl;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0CURLM\u00a0*multi_handle;<\/li>\n<li>\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0still_running;<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0<span class=\"keyword\">struct<\/span>\u00a0curl_httppost\u00a0*formpost=NULL;<\/li>\n<li class=\"alt\">\u00a0\u00a0<span class=\"keyword\">struct<\/span>\u00a0curl_httppost\u00a0*lastptr=NULL;<\/li>\n<li>\u00a0\u00a0<span class=\"keyword\">struct<\/span>\u00a0curl_slist\u00a0*headerlist=NULL;<\/li>\n<li class=\"alt\">\u00a0\u00a0<span class=\"keyword\">static<\/span>\u00a0<span class=\"keyword\">const<\/span>\u00a0<span class=\"datatypes\">char<\/span>\u00a0buf[]\u00a0=\u00a0<span class=\"string\">&#8220;Expect:&#8221;<\/span>;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0<span class=\"comment\">\/*\u00a0Fill\u00a0in\u00a0the\u00a0file\u00a0upload\u00a0field.\u00a0This\u00a0makes\u00a0libcurl\u00a0load\u00a0data\u00a0from<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0the\u00a0given\u00a0file\u00a0name\u00a0when\u00a0curl_easy_perform()\u00a0is\u00a0called.\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0curl_formadd(&amp;formpost,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lastptr,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_COPYNAME,\u00a0<span class=\"string\">&#8220;sendfile&#8221;<\/span>,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_FILE,\u00a0<span class=\"string\">&#8220;postit2.c&#8221;<\/span>,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_END);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0<span class=\"comment\">\/*\u00a0Fill\u00a0in\u00a0the\u00a0filename\u00a0field\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0curl_formadd(&amp;formpost,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lastptr,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_COPYNAME,\u00a0<span class=\"string\">&#8220;filename&#8221;<\/span>,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_COPYCONTENTS,\u00a0<span class=\"string\">&#8220;postit2.c&#8221;<\/span>,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_END);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0<span class=\"comment\">\/*\u00a0Fill\u00a0in\u00a0the\u00a0submit\u00a0field\u00a0too,\u00a0even\u00a0if\u00a0this\u00a0is\u00a0rarely\u00a0needed\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0curl_formadd(&amp;formpost,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lastptr,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_COPYNAME,\u00a0<span class=\"string\">&#8220;submit&#8221;<\/span>,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_COPYCONTENTS,\u00a0<span class=\"string\">&#8220;send&#8221;<\/span>,<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CURLFORM_END);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0curl\u00a0=\u00a0curl_easy_init();<\/li>\n<li>\u00a0\u00a0multi_handle\u00a0=\u00a0curl_multi_init();<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0<span class=\"comment\">\/*\u00a0initalize\u00a0custom\u00a0header\u00a0list\u00a0(stating\u00a0that\u00a0Expect:\u00a0100-continue\u00a0is\u00a0not<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0wanted\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0headerlist\u00a0=\u00a0curl_slist_append(headerlist,\u00a0buf);<\/li>\n<li class=\"alt\">\u00a0\u00a0<span class=\"keyword\">if<\/span>(curl\u00a0&amp;&amp;\u00a0multi_handle)\u00a0{<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0what\u00a0URL\u00a0that\u00a0receives\u00a0this\u00a0POST\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_URL,\u00a0<span class=\"string\">&#8220;http:\/\/www.example.com\/upload.cgi&#8221;<\/span>);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_VERBOSE,\u00a01L);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_HTTPHEADER,\u00a0headerlist);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_easy_setopt(curl,\u00a0CURLOPT_HTTPPOST,\u00a0formpost);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_multi_add_handle(multi_handle,\u00a0curl);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_multi_perform(multi_handle,\u00a0&amp;still_running);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">do<\/span>\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">struct<\/span>\u00a0timeval\u00a0timeout;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0rc;\u00a0<span class=\"comment\">\/*\u00a0select()\u00a0return\u00a0code\u00a0*\/<\/span><\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fd_set\u00a0fdread;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fd_set\u00a0fdwrite;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fd_set\u00a0fdexcep;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">int<\/span>\u00a0maxfd\u00a0=\u00a0-1;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"datatypes\">long<\/span>\u00a0curl_timeo\u00a0=\u00a0-1;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FD_ZERO(&amp;fdread);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FD_ZERO(&amp;fdwrite);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FD_ZERO(&amp;fdexcep);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0set\u00a0a\u00a0suitable\u00a0timeout\u00a0to\u00a0play\u00a0around\u00a0with\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0timeout.tv_sec\u00a0=\u00a01;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0timeout.tv_usec\u00a0=\u00a00;<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_multi_timeout(multi_handle,\u00a0&amp;curl_timeo);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>(curl_timeo\u00a0&gt;=\u00a00)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0timeout.tv_sec\u00a0=\u00a0curl_timeo\u00a0\/\u00a01000;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">if<\/span>(timeout.tv_sec\u00a0&gt;\u00a01)<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0timeout.tv_sec\u00a0=\u00a01;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">else<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0timeout.tv_usec\u00a0=\u00a0(curl_timeo\u00a0%\u00a01000)\u00a0*\u00a01000;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0get\u00a0file\u00a0descriptors\u00a0from\u00a0the\u00a0transfers\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_multi_fdset(multi_handle,\u00a0&amp;fdread,\u00a0&amp;fdwrite,\u00a0&amp;fdexcep,\u00a0&amp;maxfd);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0In\u00a0a\u00a0real-world\u00a0program\u00a0you\u00a0OF\u00a0COURSE\u00a0check\u00a0the\u00a0return\u00a0code\u00a0of\u00a0the<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function\u00a0calls.\u00a0\u00a0On\u00a0success,\u00a0the\u00a0value\u00a0of\u00a0maxfd\u00a0is\u00a0guaranteed\u00a0to\u00a0be<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0greater\u00a0or\u00a0equal\u00a0than\u00a0-1.\u00a0\u00a0We\u00a0call\u00a0select(maxfd\u00a0+\u00a01,\u00a0&#8230;),\u00a0specially\u00a0in<\/span><\/li>\n<li><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0case\u00a0of\u00a0(maxfd\u00a0==\u00a0-1),\u00a0we\u00a0call\u00a0select(0,\u00a0&#8230;),\u00a0which\u00a0is\u00a0basically\u00a0equal<\/span><\/li>\n<li class=\"alt\"><span class=\"comment\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0to\u00a0sleep.\u00a0*\/<\/span><\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rc\u00a0=\u00a0select(maxfd+1,\u00a0&amp;fdread,\u00a0&amp;fdwrite,\u00a0&amp;fdexcep,\u00a0&amp;timeout);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">switch<\/span>(rc)\u00a0{<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">case<\/span>\u00a0-1:<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0select\u00a0error\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">break<\/span>;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">case<\/span>\u00a00:<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">default<\/span>:<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0timeout\u00a0or\u00a0readable\/writable\u00a0sockets\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf(<span class=\"string\">&#8220;perform!\\n&#8221;<\/span>);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_multi_perform(multi_handle,\u00a0&amp;still_running);<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf(<span class=\"string\">&#8220;running:\u00a0%d!\\n&#8221;<\/span>,\u00a0still_running);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">break<\/span>;<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0}\u00a0<span class=\"keyword\">while<\/span>(still_running);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_multi_cleanup(multi_handle);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0always\u00a0cleanup\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_easy_cleanup(curl);<\/li>\n<li class=\"alt\"><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0then\u00a0cleanup\u00a0the\u00a0formpost\u00a0chain\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0curl_formfree(formpost);<\/li>\n<li><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0free\u00a0slist\u00a0*\/<\/span><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0curl_slist_free_all\u00a0(headerlist);<\/li>\n<li class=\"alt\">\u00a0\u00a0}<\/li>\n<li>\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a00;<\/li>\n<li class=\"alt\">}<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u6587\u5730\u5740 &nbsp; \u8f6c\u8f7d\u6df1\u6f02\u4e00\u733f\u00a0\u6700<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[118],"class_list":["post-4066","post","type-post","status-publish","format-standard","hentry","tag-02-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=4066"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4066\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=4066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=4066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=4066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}