2 <title>curl_easy_recv man page
</title>
3 <meta name=
"generator" content=
"roffit 0.7">
4 <STYLE type=
"text/css">
30 background-color: #e0e0e0;
36 font-family: monospace;
46 <p class=
"level0"><a name=
"NAME"></a><h2 class=
"nroffsh">NAME
</h2>
47 <p class=
"level0">curl_easy_recv - receives raw data on an
"easy" connection
<a name=
"SYNOPSIS"></a><h2 class=
"nroffsh">SYNOPSIS
</h2>
48 <p class=
"level0"><span Class=
"bold">#include
<curl/easy.h
></span>
49 <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>
50 <p class=
"level0"><a name=
"DESCRIPTION"></a><h2 class=
"nroffsh">DESCRIPTION
</h2>
51 <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(
3)
</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.
52 <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.
53 <p class=
"level0">To establish the connection, set
<span Class=
"bold">CURLOPT_CONNECT_ONLY
</span> option before calling
<a class=
"emphasis" href=
"./curl_easy_perform.html">curl_easy_perform(
3)
</a>. Note that
<a class=
"emphasis" href=
"./curl_easy_recv.html">curl_easy_recv(
3)
</a> does not work on connections that were created without this option.
54 <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(
3)
</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(
3)
</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>
55 <p class=
"level0">Added in
7.18.2.
<a name=
"RETURN"></a><h2 class=
"nroffsh">RETURN VALUE
</h2>
56 <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>.
57 <p class=
"level0">On failure, returns the appropriate error code.
58 <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.
<a name=
"EXAMPLE"></a><h2 class=
"nroffsh">EXAMPLE
</h2>
59 <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>
60 <p class=
"level0"><a class=
"manpage" href=
"./curl_easy_setopt.html">curl_easy_setopt (
3)
</a> <a class=
"manpage" href=
"./curl_easy_perform.html"> curl_easy_perform (
3)
</a> <span Class=
"manpage"> </span> <a class=
"manpage" href=
"./curl_easy_getinfo.html">curl_easy_getinfo (
3)
</a> <span Class=
"manpage"> </span> <a class=
"manpage" href=
"./curl_easy_send.html">curl_easy_send (
3)
</a> <p class=
"roffit">
61 This HTML page was made with
<a href=
"http://daniel.haxx.se/projects/roffit/">roffit
</a>.