changed alert messages to use asio to string conversion for endpoint (fixes missing...
[libtorrent.git] / docs / features.html
blob1e1dd486cbd399224ba704f66e4db00d55c0ba70
1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6 <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
7 <title>libtorrent manual</title>
8 <meta name="author" content="Arvid Norberg, arvid&#64;rasterbar.com" />
9 <link rel="stylesheet" href="style.css" type="text/css" />
10 </head>
11 <body>
12 <div class="document" id="libtorrent-manual">
13 <h1 class="title">libtorrent manual</h1>
14 <table class="docinfo" frame="void" rules="none">
15 <col class="docinfo-name" />
16 <col class="docinfo-content" />
17 <tbody valign="top">
18 <tr><th class="docinfo-name">Author:</th>
19 <td>Arvid Norberg, <a class="last reference" href="mailto:arvid&#64;rasterbar.com">arvid&#64;rasterbar.com</a></td></tr>
20 </tbody>
21 </table>
22 <div class="contents topic" id="table-of-contents">
23 <p class="topic-title first"><a name="table-of-contents">Table of contents</a></p>
24 <ul class="simple">
25 <li><a class="reference" href="#introduction" id="id6" name="id6">introduction</a></li>
26 <li><a class="reference" href="#features" id="id7" name="id7">features</a></li>
27 <li><a class="reference" href="#portability" id="id8" name="id8">portability</a></li>
28 <li><a class="reference" href="#license" id="id9" name="id9">license</a></li>
29 </ul>
30 </div>
31 <div class="section">
32 <h1><a id="introduction" name="introduction">introduction</a></h1>
33 <p>libtorrent is a C++ library that aims to be a good alternative to all the
34 other bittorrent implementations around. It is a
35 library and not a full featured client, although it comes with a working
36 example client.</p>
37 <p>The main goals of libtorrent are:</p>
38 <ul class="simple">
39 <li>to be cpu efficient</li>
40 <li>to be memory efficient</li>
41 <li>to be very easy to use</li>
42 </ul>
43 </div>
44 <div class="section">
45 <h1><a id="features" name="features">features</a></h1>
46 <p>libtorrent is still being developed, however it is stable. It is an ongoing
47 project (including this documentation). The current state includes the
48 following features:</p>
49 <ul class="simple">
50 <li>trackerless torrents (using the Mainline kademlia DHT protocol) with
51 some <a class="reference" href="dht_extensions.html">DHT extensions</a>.</li>
52 <li>support for IPv6</li>
53 <li>NAT-PMP and UPnP support (automatic port mapping on routers that supports it)</li>
54 <li>piece-wise, unordered, incremental file allocation</li>
55 <li>uses separate threads for checking files and for main downloader, with a
56 fool-proof thread-safe library interface. (i.e. There's no way for the
57 user to cause a deadlock). (see <a class="reference" href="manual.html#threads">threads</a>)</li>
58 <li>adjusts the length of the request queue depending on download rate.</li>
59 <li>multitracker extension support (as <a class="reference" href="http://home.elp.rr.com/tur/multitracker-spec.txt">specified by John Hoffman</a>)</li>
60 <li>supports files &gt; 2 gigabytes.</li>
61 <li>serves multiple torrents on a single port and in a single thread</li>
62 <li>fast resume support, a way to get rid of the costly piece check at the
63 start of a resumed torrent. Saves the storage state, piece_picker state
64 as well as all local peers in a separate fast-resume file.</li>
65 <li><a class="reference" href="manual.html#http-seeding">HTTP seeding</a>, as <a class="reference" href="http://www.getright.com/seedtorrent.html">specified by Michael Burford of GetRight</a>.</li>
66 <li>piece picking on block-level (as opposed to piece-level).
67 This means it can download parts of the same piece from different peers.
68 It will also prefer to download whole pieces from single peers if the
69 download speed is high enough from that particular peer.</li>
70 <li>supports the <a class="reference" href="extension_protocol.html">udp-tracker protocol</a> by Olaf van der Spek.</li>
71 <li>queues torrents for file check, instead of checking all of them in parallel.</li>
72 <li>supports http proxies and basic proxy authentication</li>
73 <li>gzipped tracker-responses</li>
74 <li>can limit the upload and download bandwidth usage and the maximum number of
75 unchoked peers</li>
76 <li>implements fair trade. User settable trade-ratio, must at least be 1:1,
77 but one can choose to trade 1 for 2 or any other ratio that isn't unfair
78 to the other party.</li>
79 <li>supports an <a class="reference" href="udp_tracker_protocol.html">extension protocol</a>. See <a class="reference" href="manual.html#extensions">extensions</a>.</li>
80 <li>supports the <tt class="docutils literal"><span class="pre">no_peer_id=1</span></tt> extension that will ease the load off trackers.</li>
81 <li>possibility to limit the number of connections.</li>
82 <li>delays have messages if there's no other outgoing traffic to the peer, and
83 doesn't send have messages to peers that already has the piece. This saves
84 bandwidth.</li>
85 <li>does not have any requirements on the piece order in a torrent that it
86 resumes. This means it can resume a torrent downloaded by any client.</li>
87 <li>supports the <tt class="docutils literal"><span class="pre">compact=1</span></tt> tracker parameter.</li>
88 <li>selective downloading. The ability to select which parts of a torrent you
89 want to download.</li>
90 <li>ip filter to disallow ip addresses and ip ranges from connecting and
91 being connected</li>
92 </ul>
93 </div>
94 <div class="section">
95 <h1><a id="portability" name="portability">portability</a></h1>
96 <p>libtorrent is portable at least among Windows, MacOS X and other UNIX-systems.
97 It uses Boost.Thread, Boost.Filesystem, Boost.Date_time and various other
98 boost libraries as well as <a class="reference" href="http://www.zlib.org">zlib</a> (shipped) and <a class="reference" href="http://asio.sf.net">asio</a> (shipped). At least version
99 1.33.1 of boost is required.</p>
100 <p>Since libtorrent uses asio, it will take full advantage of high performance
101 network APIs on the most popular platforms. I/O completion ports on windows,
102 epoll on linux and kqueue on MacOS X and BSD.</p>
103 <p>libtorrent has been successfully compiled and tested on:</p>
104 <ul class="simple">
105 <li>Windows 2000 vc7.1, vc8</li>
106 <li>Linux x86 GCC 3.3, GCC 3.4.2</li>
107 <li>MacOS X (darwin), (Apple's) GCC 3.3, (Apple's) GCC 4.0</li>
108 <li>SunOS 5.8 GCC 3.1</li>
109 <li>Cygwin GCC 3.3.3</li>
110 </ul>
111 <p>Fails on:</p>
112 <ul class="simple">
113 <li>GCC 2.95.4</li>
114 <li>msvc6</li>
115 </ul>
116 </div>
117 <div class="section">
118 <h1><a id="license" name="license">license</a></h1>
119 <p>libtorrent is released under the <a class="reference" href="http://www.opensource.org/licenses/bsd-license.php">BSD-license</a>.</p>
120 <p>This means that you can use the library in your project without having to
121 release its source code. The only requirement is that you give credit
122 to the author of the library by including the libtorrent license in your
123 software or documentation.</p>
124 <p><a class="reference" href="projects.html">Here's</a> a list of some projects that uses libtorrent.</p>
125 </div>
126 </div>
127 </body>
128 </html>