亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libcurl-multi.html

?? 專門介紹網(wǎng)絡爬蟲設計的論文,寫得非常好啊.希望大家好好學習
?? HTML
字號:
<html><head><title>libcurl-multi man page</title><meta name="generator" content="roffit 0.7"><STYLE type="text/css">P.level0 { padding-left: 2em;}P.level1 { padding-left: 4em;}P.level2 { padding-left: 6em;}span.emphasis { font-style: italic;}span.bold { font-weight: bold;}span.manpage { font-weight: bold;}h2.nroffsh { background-color: #e0e0e0;}span.nroffip { font-weight: bold; font-size: 120%; font-family: monospace;}p.roffit { text-align: center; font-size: 80%;}</STYLE></head><body><p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2><p class="level0">libcurl-multi - how to use the multi interface <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2><p class="level0">This is an overview on how to use the libcurl multi interface in your C programs. There are specific man pages for each function mentioned in here. There's also the <span Class="emphasis">libcurl-tutorial(3)</span> man page for a complete tutorial to programming with libcurl and the <span Class="emphasis">libcurl-easy(3)</span> man page for an overview of the libcurl easy interface. <p class="level0">All functions in the multi interface are prefixed with curl_multi. <a name="OBJECTIVES"></a><h2 class="nroffsh">OBJECTIVES</h2><p class="level0">The multi interface offers several abilities that the easy interface doesn't. They are mainly: <p class="level0">1. Enable a "pull" interface. The application that uses libcurl decides where and when to ask libcurl to get/send data. <p class="level0">2. Enable multiple simultaneous transfers in the same thread without making it complicated for the application. <p class="level0">3. Enable the application to wait for action on its own file descriptors and curl's file descriptors simultaneous easily. <a name="ONE"></a><h2 class="nroffsh">ONE MULTI HANDLE MANY EASY HANDLES</h2><p class="level0">To use the multi interface, you must first create a 'multi handle' with <a class="emphasis" href="./curl_multi_init.html">curl_multi_init(3)</a>. This handle is then used as input to all further curl_multi_* functions. <p class="level0">Each single transfer is built up with an easy handle. You must create them, and setup the appropriate options for each easy handle, as outlined in the <a class="emphasis" href="./libcurl.html">libcurl(3)</a> man page, using <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>. <p class="level0">When the easy handle is setup for a transfer, then instead of using <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> (as when using the easy interface for transfers), you should instead add the easy handle to the multi handle using <a class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle(3)</a>. The multi handle is sometimes referred to as a &acute;multi stack&acute; because of the fact that it may hold a large amount of easy handles. <p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a>. Once removed from the multi handle, you can again use other easy interface functions like <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> on the handle or whatever you think is necessary. <p class="level0">Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your application drive. You drive the transfers by invoking <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>. libcurl will then transfer data if there is anything available to transfer. It'll use the callbacks and everything else you have setup in the individual easy handles. It'll transfer data on all current transfers in the multi stack that are ready to transfer anything. It may be all, it may be none. <p class="level0">Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> like crazy. <a class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a> offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. <p class="level0">A little note here about the return codes from the multi functions, and especially the <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>: if you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". <p class="level0"><a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean successful. One or more of the transfers may have failed. Tracking when this number changes, you know when one or more transfers are done. <p class="level0">To get information about completed transfers, to figure out success or not and similar, <a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> should be called. It can return a message about a current or previous transfer. Repeated invokes of the function get more messages until the message queue is empty. The information you receive there includes an easy handle pointer which you may use to identify which easy handle the information regards. <p class="level0">When a single transfer is completed, the easy handle is still left added to the multi stack. You need to first remove the easy handle with <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a> and then close it with <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>, or possibly set new options to it and add it again with <a class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle(3)</a> to start another transfer. <p class="level0">When all transfers in the multi stack are done, cleanup the multi handle with <a class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup(3)</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> calls on every single easy handle to clean them up properly. <p class="level0">If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). <a name="MULTISOCKET"></a><h2 class="nroffsh">MULTI_SOCKET</h2><p class="level0">Since 7.16.0, the <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> function offers a way for applications to not only avoid being forced to use select(), but it also offers a much more high-performing API that will make a significant difference for applications using large numbers of simultaneous connections. <p class="level0"><a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> (and <a class="emphasis" href="./curl_multi_socket_all.html">curl_multi_socket_all(3)</a>) is then used instead of <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>. <a name="BLOCKING"></a><h2 class="nroffsh">BLOCKING</h2><p class="level0">A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions: <p class="level0"><pre><p class="level0">&nbsp;- Name resolves on non-windows unless c-ares is used &nbsp;- GnuTLS SSL connections &nbsp;- Active FTP connections &nbsp;- HTTP proxy CONNECT operations &nbsp;- SCP and SFTP connections &nbsp;- SFTP transfers &nbsp;- TFTP transfers &nbsp;- file:// transfers <p class="roffit"> This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.</body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产性色一区二区| 亚洲国产精品t66y| 欧美电影免费提供在线观看| 欧美精品黑人性xxxx| 日韩一区二区精品| 欧美精品一区二区三区四区| 久久久噜噜噜久久人人看 | 欧美影院午夜播放| 欧美一级免费大片| 精品国产自在久精品国产| 精品国产青草久久久久福利| 在线观看成人免费视频| 成人高清免费观看| 欧美精品久久一区| 精品久久久三级丝袜| 国产精品麻豆欧美日韩ww| 亚洲黄色免费网站| 国产精品69久久久久水密桃| 91在线观看污| 欧美精品一区二区在线观看| 亚洲美女精品一区| 久久66热re国产| 日本韩国视频一区二区| 精品剧情在线观看| 亚洲综合色丁香婷婷六月图片| 美女国产一区二区三区| ww久久中文字幕| 欧美变态tickling挠脚心| 欧美国产1区2区| 亚洲欧美日韩在线| 日本91福利区| 不卡视频在线看| 欧美一区二区三区播放老司机| 国产精品成人免费| 捆绑紧缚一区二区三区视频| 91.成人天堂一区| 五月天国产精品| 欧美精品日韩一本| 亚洲国产精品久久人人爱| 欧美日韩专区在线| 亚洲狠狠爱一区二区三区| 色婷婷综合在线| 亚洲精品videosex极品| 国产高清精品网站| 国产日韩欧美在线一区| 韩日欧美一区二区三区| 777a∨成人精品桃花网| 亚洲成精国产精品女| 欧美高清激情brazzers| 日本成人中文字幕| 欧美电影精品一区二区| 国产精品自拍网站| 亚洲欧美激情插| 欧美日韩国产电影| 国产伦精一区二区三区| 国产精品国产三级国产普通话三级| 欧美无乱码久久久免费午夜一区| 亚洲综合丝袜美腿| 在线电影国产精品| 日本vs亚洲vs韩国一区三区二区| 日韩一区二区三区三四区视频在线观看| 极品少妇xxxx精品少妇偷拍| 精品国产免费一区二区三区四区 | 久久狠狠亚洲综合| 亚洲欧洲精品成人久久奇米网| 91在线视频播放地址| 偷偷要91色婷婷| 欧美激情综合在线| 日韩欧美一区二区三区在线| 99国产精品久| 久久99精品久久只有精品| 亚洲成av人片在线观看无码| 欧美激情综合五月色丁香| 欧美狂野另类xxxxoooo| 99这里都是精品| 精品一二三四区| 青青草国产成人99久久| 中文字幕av一区二区三区| 日韩美女一区二区三区四区| 91丨国产丨九色丨pron| 国产不卡在线播放| 国产一区二区三区日韩| 蜜桃av一区二区三区电影| 美女在线一区二区| 日韩电影免费一区| 国产精品88av| 国产成人精品亚洲日本在线桃色| 日韩成人一区二区| 亚洲自拍偷拍av| 午夜一区二区三区在线观看| 专区另类欧美日韩| 亚洲影视在线播放| 亚洲影视资源网| 天天综合日日夜夜精品| 久久99精品视频| www.久久精品| 欧美精品在线一区二区三区| 91精品久久久久久蜜臀| 久久久午夜精品| 日韩一区日韩二区| 亚洲一区二区在线观看视频| 日本不卡123| 国产成人在线观看| 欧美在线视频全部完| 欧美一卡二卡在线观看| 国产精品视频一区二区三区不卡| 亚洲午夜精品网| 粉嫩av亚洲一区二区图片| 欧美日韩综合色| 国产精品热久久久久夜色精品三区 | 成人午夜视频在线| 久久亚洲精华国产精华液| 五月婷婷色综合| 色综合色综合色综合色综合色综合| 欧美揉bbbbb揉bbbbb| 中文字幕欧美国产| 激情综合一区二区三区| 欧美日本精品一区二区三区| 亚洲欧洲成人自拍| 国产aⅴ综合色| 久久久www成人免费无遮挡大片| 亚洲超丰满肉感bbw| 欧美精品丝袜中出| 婷婷综合久久一区二区三区| 97se亚洲国产综合自在线不卡 | 国产精品美女久久久久久 | 在线观看一区二区视频| 国产精品少妇自拍| 日韩国产欧美一区二区三区| 欧美午夜精品理论片a级按摩| 国产亚洲精品资源在线26u| 国内一区二区在线| 欧美xxxxxxxx| 韩国av一区二区三区在线观看| 91麻豆精品久久久久蜜臀 | 国产盗摄一区二区三区| 国产精品日日摸夜夜摸av| 成人综合在线网站| 久久久亚洲精品石原莉奈 | 91精品黄色片免费大全| 麻豆国产精品777777在线| 日韩一级黄色大片| 国产成人精品www牛牛影视| 国产片一区二区三区| 91一区二区在线观看| 日本不卡视频一二三区| 久久久www成人免费毛片麻豆| 成人av网站在线观看免费| 亚洲成人自拍偷拍| 久久蜜桃av一区二区天堂 | 91黄色免费看| 麻豆精品精品国产自在97香蕉| 精品福利在线导航| 欧美在线观看18| 国产精品正在播放| 亚洲国产精品欧美一二99| 日韩欧美中文字幕精品| 色呦呦网站一区| 国产主播一区二区| 免费观看30秒视频久久| 亚洲尤物视频在线| 国产精品成人一区二区艾草 | 不卡的电视剧免费网站有什么| 一级中文字幕一区二区| 久久精品视频网| 26uuuu精品一区二区| 欧美一区二区免费观在线| 一本色道久久综合亚洲aⅴ蜜桃| 日韩高清不卡在线| 亚洲一区二区欧美激情| 中文字幕一区二区三区四区 | 精品国产欧美一区二区| 51精品国自产在线| 欧美一区二区三级| 精品福利一区二区三区 | 国产精品毛片无遮挡高清| 久久精品夜色噜噜亚洲a∨| 日韩视频免费观看高清完整版 | 久久一区二区三区国产精品| 精品成人在线观看| 精品日韩一区二区三区| 精品久久久久久久久久久久久久久久久 | 亚洲人成人一区二区在线观看 | 天堂av在线一区| 日韩va欧美va亚洲va久久| 奇米色一区二区| 国产一区高清在线| 色久综合一二码| 欧美一区二区不卡视频| 国产清纯白嫩初高生在线观看91| 国产精品久久久久久户外露出| 综合亚洲深深色噜噜狠狠网站| 一区二区三区色| 麻豆精品国产91久久久久久| 国产一区高清在线| 国产成人免费在线视频| 色哟哟一区二区| 精品99一区二区| 丝袜国产日韩另类美女| 成人一区二区三区视频|