1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2 "http://www.w3.org/TR/html4/loose.dtd"> 3<html><head> 4<title>curl_easy_recv man page</title> 5<meta name="generator" content="roffit"> 6<STYLE type="text/css"> 7P.level0 { 8 padding-left: 2em; 9} 10 11P.level1 { 12 padding-left: 4em; 13} 14 15P.level2 { 16 padding-left: 6em; 17} 18 19span.emphasis { 20 font-style: italic; 21} 22 23span.bold { 24 font-weight: bold; 25} 26 27span.manpage { 28 font-weight: bold; 29} 30 31h2.nroffsh { 32 background-color: #e0e0e0; 33} 34 35span.nroffip { 36 font-weight: bold; 37 font-size: 120%; 38 font-family: monospace; 39} 40 41p.roffit { 42 text-align: center; 43 font-size: 80%; 44} 45</STYLE> 46</head><body> 47 48<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2> 49<p class="level0">curl_easy_recv - receives raw data on an "easy" connection <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2> 50<p class="level0"><span Class="bold">#include <curl/easy.h></span> 51<p class="level0"><span Class="bold">CURLcode curl_easy_recv( CURL * curl , void * buffer ,</span> <span Class="bold">size_t buflen , size_t * n );</span> 52<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2> 53<p class="level0">This function receives raw data from the established connection. You may use it together with <a Class="emphasis" href="/curl_easy_send.html">curl_easy_send</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 54<p class="level0"><span Class="bold">buffer</span> is a pointer to your buffer that will get the received data. <span Class="bold">buflen</span> is the maximum amount of data you can get in that buffer. The variable <span Class="bold">n</span> points to will receive the number of received bytes. 55<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="/curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="/curl_easy_recv.html">curl_easy_recv</a> does not work on connections that were created without this option. 56<p class="level0">You must ensure that the socket has data to read before calling <a Class="emphasis" href="/curl_easy_recv.html">curl_easy_recv</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="/curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it has any data you can read. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2> 57<p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2> 58<p class="level0">On success, returns <span Class="bold">CURLE_OK</span>, stores the received data into <span Class="bold">buffer</span>, and the number of bytes it actually read into <span Class="bold">*n</span>. 59<p class="level0">On failure, returns the appropriate error code. 60<p class="level0">If there is no data to read, the function returns <span Class="bold">CURLE_AGAIN</span>. Use your operating system facilities to wait until the data is ready, and retry. 61<p class="level0">Reading exactly 0 bytes would indicate a closed connection. 62<p class="level0">If there's no socket available to use from the previous transfer, this function returns CURLE_UNSUPPORTED_PROTOCOL. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2> 63<p class="level0">See <span Class="bold">sendrecv.c</span> in <span Class="bold">docs/examples</span> directory for usage example. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2> 64<p class="level0"><a Class="manpage" href="/curl_easy_setopt.html">curl_easy_setopt</a> <a Class="manpage" href="/curl_easy_perform.html">curl_easy_perform</a> <span Class="manpage"> </span> <a Class="manpage" href="/curl_easy_getinfo.html">curl_easy_getinfo</a> <span Class="manpage"> </span> <a Class="manpage" href="/curl_easy_send.html">curl_easy_send</a> <p class="roffit"> 65 This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>. 66</body></html> 67