2 <title>curl_easy_send 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_send - sends raw data over 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_send( CURL * curl , const 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 sends arbitrary data over the established connection. You may use it together with
<a class=
"emphasis" href=
"./curl_easy_recv.html">curl_easy_recv(
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 the data of length
<span Class=
"bold">buflen
</span> that you want sent. The variable
<span Class=
"bold">n
</span> points to will receive the number of sent 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_send.html">curl_easy_send(
3)
</a> will not work on connections that were created without this option.
54 <p class=
"level0">You must ensure that the socket is writable before calling
<a class=
"emphasis" href=
"./curl_easy_send.html">curl_easy_send(
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 can be written to.
<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> and stores the number of bytes actually sent into
<span Class=
"bold">*n
</span>. Note that this may very well be less than the amount you wanted to send.
57 <p class=
"level0">On failure, returns the appropriate error code.
<a name=
"EXAMPLE"></a><h2 class=
"nroffsh">EXAMPLE
</h2>
58 <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>
59 <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> <a class=
"manpage" href=
"./curl_easy_getinfo.html"> curl_easy_getinfo (
3)
</a> <span Class=
"manpage"> </span> <a class=
"manpage" href=
"./curl_easy_recv.html">curl_easy_recv (
3)
</a> <p class=
"roffit">
60 This HTML page was made with
<a href=
"http://daniel.haxx.se/projects/roffit/">roffit
</a>.