-
Notifications
You must be signed in to change notification settings - Fork 89
/
_competitors.html
139 lines (114 loc) · 5.16 KB
/
_competitors.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include "_doctype.html"
<html>
<head> <title>libcurl - available alternatives</title>
#include "css.t"
</head>
#define LIBCURL_COMPETITORS
#define CURL_URL libcurl/competitors.html
#include "setup.t"
#include "_menu.html"
WHERE2(libcurl, "/libcurl/", libcurl Alternatives)
TITLE(Other HTTP/FTP client Libraries for C/C++)
<div class="relatedbox">
<b>Related:</b>
<br><a href="../docs/features.html">List of Features</a>
<br><a href="relatedlibs.html">Related Libs</a>
<br><a href="../docs/comparison-table.html">FTP+HTTP Tools comparison</a>
</div>
<p>
Free and Open Source Software projects have a long tradition of forks and
duplicate efforts. We enjoy "doing it ourselves", no matter if someone else
has done something very similar already.
<p>
Alternative libraries that cover parts of libcurl's features, in A-Z order:
<p>
<b><a href="https://www.boost.org/libs/beast">Beast</a></b> (Boost)
<ul><li>
Beast is a C++ header-only library serving as a foundation for writing
interoperable networking libraries by providing low-level HTTP/1, WebSocket,
and networking protocol vocabulary types and algorithms using the consistent
asynchronous model of Boost.Asio.
</li></ul>
<b><a href="https://docs.libcpr.org/">CPR</a></b> (MIT)
<ul><li>
C++ Requests: Curl for People, a spiritual port of Python Requests. (based on libcurl)
</li></ul>
<b><a href="https://www.berlios.de/software/kasablanca/">ftplib++</a></b> (GPL)
<ul><li>
A C++ library for "easy FTP client functionality. It features resuming of up-
and downloads, FXP support, SSL/TLS encryption, and logging functionality."
</li></ul>
<b><a href="https://www.gnu.org/software/commoncpp/">GNU Common C++ library</a></b>
<ul><li>
Has a URLStream class. This C++ class allow you to download a file using HTTP.
See demo/urlfetch.cpp in commoncpp2-1.3.19.tar.gz
</li></ul>
<b><a href="https://svnweb.freebsd.org/base/head/lib/libfetch/">libfetch</a></b> (BSD)<br>
<ul><li>
Does HTTP and FTP transfers (both ways), supports file: URLs, and an API for
URL parsing. The utility <i>fetch</i> that is built on libfetch is an
integral part of the <a href="https://www.freebsd.org/">FreeBSD</a> operating
system.
</li></ul>
<b><a href="https://www.w3.org/Library/">libwww</a></b> (<a href="https://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C license</a>) <a href="libwww.html">comparison with libcurl</a> <br>
<ul><li>
(<b>Not used anymore</b>) More complex and harder to use than libcurl
is. Includes everything from multi-threading to HTML parsing. The most
notable transfer-related feature that libcurl does not offer but libwww
does, is caching.
</li></ul>
<b><a href="https://live.gnome.org/LibSoup">libsoup</a></b> (LGPL)<br>
<ul><li>
Part of glib (GNOME).
</li></ul>
<b><a href="https://notroj.github.io/neon/">neon</a></b> (LGPL) <a href="neon.html">comparison with neon</a> <br>
<ul><li>
An HTTP and WebDAV client library, with a C interface. I have mainly heard
and seen people use this with WebDAV as their main interest. This is one
of the two alternatives used by the Subversion project.
</li></ul>
<b><a href="https://pocoproject.org/docs/">POCO C++ Libraries</a></b> (Boost)
<ul><li>
a collection of open source C++ class libraries that simplify and accelerate
the development of network-centric, portable applications in C++.
</li></ul>
<b><a href="https://doc.qt.io/qt-6/qtnetwork-programming.html">Qt Networking</a></b> (GPL/LGPL)<br>
<ul><li>
The Qt Network module offers classes that allow you to write TCP/IP clients
and servers, including "High Level" network operations for HTTP and FTP.
</li></ul>
<b><a href="https://serf.apache.org/">Serf</a></b> (Apache License)
<ul><li>
<i>"The serf library is a C-based HTTP client library built upon the Apache
Portable Runtime (APR) library. It multiplexes connections, running the
read/write communication asynchronously."</i> This is one
of the two alternatives used by the Subversion project.
</li></ul>
<b><a href="https://www.gnu.org/software/wget/">wget</a></b> (GPL)<br>
<ul><li>
While not a library at all, I have been told that people sometimes extract the
network code from it and base their own hacks from there.
</li></ul>
<b><a
href="https://msdn.microsoft.com/en-us/library/aa385483.aspx">wininet</a></b> <a
href="wininet.html">comparison with libcurl</a><br>
<ul><li>
<i>"The Windows Internet (WinINet) application programming interface (API)
enables applications to interact with Gopher, FTP, and HTTP protocols to
access Internet resources."</i>
</li></ul>
<b><a href="https://msdn.microsoft.com/library/en-us/xmlsdk30/htm/xmobjxmlhttprequest.asp">XMLHTTP Object</a></b> also known as IXMLHTTPRequest (part of MSXML 3.0)<br>
<ul><li>
(Windows) Provides client-side protocol support for communication with HTTP
servers. A client computer can use the XMLHTTP object to send an arbitrary
HTTP request, receive the response, and have the Microsoft® XML Document
Object Model (DOM) parse that response.
</li></ul>
<p>
Have <b>you</b> tried programming with one of the other libs and care share
your experiences? We'd love to make this collection more complete and feature
lengthier comments about each lib.
</p>
#include "_footer.html"
</body>
</html>