1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

separated the easy-specific stuff into a new libcurl-easy.3 man page and

made the libcurl.3 one a more generic overview
This commit is contained in:
Daniel Stenberg 2003-08-12 08:46:02 +00:00
parent e2aecfe80f
commit a3e5d81765
2 changed files with 57 additions and 28 deletions

View File

@ -0,0 +1,29 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH libcurl 3 "12 Aug 2003" "libcurl 7.10.7" "libcurl easy interface"
.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle" in various docs and sources), which you
use as input to the easy interface functions you use. Use
\fIcurl_easy_init()\fP to get the handle.
You continue by setting all the options you want in the upcoming transfer, the
most important among them is the URL itself (you can't transfer anything
without a specified URL as you may have figured out yourself). You might want
to set some callbacks as well that will be called from the library when data
is available etc. \fIcurl_easy_setopt()\fP is used for all this.
When all is setup, you tell libcurl to perform the transfer using
\fIcurl_easy_perform()\fP. It will then do the entire operation and won't
return until it is done (successfully or not).
After the transfer has been made, you can set new options and make another
transfer, or if you're done, cleanup the session by calling
\fIcurl_easy_cleanup()\fP. If you want persistant connections, you don't
cleanup immediately, but instead run ahead and perform other transfers using
the same easy handle.

View File

@ -7,38 +7,37 @@
libcurl \- client-side URL transfers libcurl \- client-side URL transfers
.SH DESCRIPTION .SH DESCRIPTION
This is an overview on how to use libcurl in your C programs. There are This is an overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There's also the specific man pages for each function mentioned in here. There are also the
libcurl-the-guide document for a complete tutorial to programming with \fIlibcurl-easy\fP man page, the \fIlibcurl-multi\fP man page, the
libcurl. \fIlibcurl-share\fP man page and the \fIlibcurl-the-guide\fP document for
further reading on how to do programming with libcurl.
There are a dozen custom bindings that bring libcurl access to your favourite There exist more than a dozen custom bindings that bring libcurl access to
language. Look elsewhere for documentation on those. your favourite language. Look elsewhere for documentation on those.
All applications that use libcurl should call \fIcurl_global_init()\fP exactly All applications that use libcurl should call \fIcurl_global_init()\fP exactly
once before any libcurl function can be used. After all usage of libcurl is once before any libcurl function can be used. After all usage of libcurl is
complete, it \fBmust\fP call \fIcurl_global_cleanup()\fP. In between those two complete, it \fBmust\fP call \fIcurl_global_cleanup()\fP. In between those two
calls, you can use libcurl as described below. calls, you can use libcurl as described below.
When using libcurl's "easy" interface you init your session and get a handle, To transfer files, you always set up an "easy handle" using
which you use as input to the easy interface functions you use. Use \fIcurl_easy_init()\fP, but when you want the file(s) transfered you have the
\fIcurl_easy_init()\fP to get the handle. There is also the so called "multi" option of using the "easy" interface, or the "multi" interface.
interface, try the \fIlibcurl-multi(3)\fP man page for an overview of that.
You continue by setting all the options you want in the upcoming transfer, The easy interface is a synchronous interface with which you call
most important among them is the URL itself (you can't transfer anything \fIcurl_easy_perform\fP and let it perform the transfer. When it is completed,
without a specified URL as you may have figured out yourself). You might want the function return and you can continue. More details are found in the
to set some callbacks as well that will be called from the library when data \fIlibcurl-easy\fP man page.
is available etc. \fIcurl_easy_setopt()\fP is there for this.
When all is setup, you tell libcurl to perform the transfer using The multi interface on the other hand is an asynchronous interface, that you
\fIcurl_easy_perform()\fP. It will then do the entire operation and won't call and that performs only a little piece of the tranfer on each invoke. It
return until it is done (successfully or not). is perfect if you want to do things while the transfer is in progress, or
similar. The multi interface allows you to select() on libcurl action, and
even to easily download multiple files simultaneously using a single thread.
After the transfer has been made, you can set new options and make another You can have multiple easy handles share certain data, even if they are used
transfer, or if you're done, cleanup the session by calling in different threads. This magic is setup using the share interface, as
\fIcurl_easy_cleanup()\fP. If you want persistant connections, you don't described in the \fIlibcurl-share\fP man page.
cleanup immediately, but instead run ahead and perform other transfers using
the same handle. See the chapter below for Persistant Connections.
There is also a series of other helpful functions to use. They are: There is also a series of other helpful functions to use. They are:
@ -107,14 +106,15 @@ Persistent connections means that libcurl can re-use the same connection for
several transfers, if the conditions are right. several transfers, if the conditions are right.
libcurl will *always* attempt to use persistent connections. Whenever you use libcurl will *always* attempt to use persistent connections. Whenever you use
curl_easy_perform(), libcurl will attempt to use an existing connection to do \fIcurl_easy_perform()\fP or \fIcurl_multi_perform()\fP, libcurl will attempt
the transfer, and if none exists it'll open a new one that will be subject for to use an existing connection to do the transfer, and if none exists it'll
re-use on a possible following call to curl_easy_perform(). open a new one that will be subject for re-use on a possible following call to
\fIcurl_easy_perform()\fP or \fIcurl_multi_perform()\fP.
To allow libcurl to take full advantage of persistent connections, you should To allow libcurl to take full advantage of persistent connections, you should
do as many of your file transfers as possible using the same curl handle. When do as many of your file transfers as possible using the same curl handle. When
you call curl_easy_cleanup(), all the possibly open connections held by you call \fIcurl_easy_cleanup()\fP, all the possibly open connections held by
libcurl will be closed and forgotten. libcurl will be closed and forgotten.
Note that the options set with curl_easy_setopt() will be used in on every Note that the options set with \fIcurl_easy_setopt()\fP will be used in on
repeat curl_easy_perform() call every repeated \fIcurl_easy_perform()\fP call.