2005-08-17 19:19:20 +02:00
|
|
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
2006-05-20 19:59:17 +02:00
|
|
|
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
|
2005-08-17 19:19:20 +02:00
|
|
|
<title>client_test example program</title>
|
2006-05-20 19:59:17 +02:00
|
|
|
<style type="text/css">
|
|
|
|
|
|
|
|
body
|
|
|
|
{
|
|
|
|
background-color: white;
|
|
|
|
color: black;
|
|
|
|
margin: 1em 2em 1em 2em;
|
|
|
|
}
|
|
|
|
|
|
|
|
h1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-align: left; font-size: 140%; }
|
|
|
|
h2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-align: left; font-size: 110%; }
|
|
|
|
h3 { font-family: "courier new", courier, monospace; font-weight: bold; text-align: left; font-size: 100%; }
|
|
|
|
|
|
|
|
pre
|
|
|
|
{
|
|
|
|
border: gray 1pt solid;
|
|
|
|
padding: 2pt;
|
|
|
|
|
|
|
|
display: block;
|
|
|
|
font-family: "courier new", courier, monospace;
|
|
|
|
background-color: #eeeeee;
|
|
|
|
color: black;
|
|
|
|
font-size: small
|
|
|
|
}
|
|
|
|
|
|
|
|
code
|
|
|
|
{
|
|
|
|
white-space: pre;
|
|
|
|
border: gray 1pt solid;
|
|
|
|
padding: 2pt;
|
|
|
|
|
|
|
|
display: block;
|
|
|
|
font-family: "courier new", courier, monospace;
|
|
|
|
color: black;
|
|
|
|
font-size: small
|
|
|
|
}
|
|
|
|
|
|
|
|
tt
|
|
|
|
{
|
|
|
|
display: inline;
|
|
|
|
font-family: "Courier New", Courier, monospace;
|
|
|
|
}
|
|
|
|
|
|
|
|
p
|
|
|
|
{
|
|
|
|
text-align: justify;
|
|
|
|
font-family: Georgia, "Times New Roman", Times, serif
|
|
|
|
}
|
|
|
|
|
|
|
|
ul
|
|
|
|
{
|
|
|
|
font-family: Georgia, "Times New Roman", Times, serif
|
|
|
|
}
|
|
|
|
|
|
|
|
ol
|
|
|
|
{
|
|
|
|
font-family: Georgia, "Times New Roman", Times, serif
|
|
|
|
}
|
|
|
|
|
|
|
|
a:link
|
|
|
|
{
|
|
|
|
font-weight: bold;
|
|
|
|
color: #003366;
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
a:visited
|
|
|
|
{
|
|
|
|
font-weight: bold;
|
|
|
|
color: #003366;
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
table
|
|
|
|
{
|
|
|
|
border: 1px solid black;
|
|
|
|
border-collapse: collapse;
|
|
|
|
}
|
|
|
|
|
|
|
|
table td
|
|
|
|
{
|
|
|
|
padding: 6px;
|
|
|
|
}
|
|
|
|
|
|
|
|
table th
|
|
|
|
{
|
|
|
|
border: 3px solid black;
|
|
|
|
padding: 6px;
|
|
|
|
}
|
|
|
|
|
|
|
|
table.menu
|
|
|
|
{
|
|
|
|
border-style: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
table.menu td
|
|
|
|
{
|
|
|
|
padding-left: 15px;
|
|
|
|
padding-right: 15px;
|
|
|
|
padding-top: 7px;
|
|
|
|
padding-bottom: 7px;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
td
|
|
|
|
{
|
|
|
|
border: 1px solid black
|
|
|
|
}
|
|
|
|
|
|
|
|
div.warning, div.note, div.important {
|
|
|
|
width: 80%;
|
|
|
|
margin: 1.5em auto;
|
|
|
|
background: #C1E5F6;
|
|
|
|
background: #F1FFF5;
|
|
|
|
border: solid 1px #D1DFD5;
|
|
|
|
padding: 5px 10px 5px 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</style>
|
2005-08-17 19:19:20 +02:00
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="document" id="client-test-example-program">
|
|
|
|
<h1 class="title">client_test example program</h1>
|
|
|
|
<p>Client test is a, more or less, complete bittorrent client. It lacks most
|
|
|
|
settings and you can't start or stop torrents once you've started it. All
|
|
|
|
the settings are hardcoded. The commandline arguments are:</p>
|
|
|
|
<pre class="literal-block">
|
|
|
|
client_test <filename1.torrent> <filename2.torrent> ...
|
|
|
|
</pre>
|
|
|
|
<p>You can start any number of torrent downloads/seeds via the commandline.
|
|
|
|
If one argument starts with <tt class="docutils literal"><span class="pre">http://</span></tt> it is interpreted as a tracker
|
|
|
|
announce url, and it expects an info-hash as the next argument. The info-hash
|
|
|
|
has ti be hex-encoded. For example: <tt class="docutils literal"><span class="pre">2410d4554d5ed856d69f426c38791673c59f4418</span></tt>.
|
|
|
|
If you pass an announce url and info-hash, a torrent-less download is started.
|
|
|
|
It relies on that at least one peer on the tracker is running a libtorrent based
|
|
|
|
client and has the metadata (.torrent file). The metadata extension in
|
|
|
|
libtorrent will then download it from that peer (or from those peers if more
|
|
|
|
than one).</p>
|
|
|
|
<p>While running, the <tt class="docutils literal"><span class="pre">client_test</span></tt> sample will look something like this:</p>
|
2006-05-20 19:59:17 +02:00
|
|
|
<img alt="client_test.png" src="client_test.png" />
|
2005-08-17 19:19:20 +02:00
|
|
|
<p>The commands available in the client are:</p>
|
|
|
|
<ul class="simple">
|
|
|
|
<li><tt class="docutils literal"><span class="pre">q</span></tt> quits the client (there will be a delay while the client waits
|
|
|
|
for tracker responses)</li>
|
|
|
|
<li><tt class="docutils literal"><span class="pre">l</span></tt> toggle log. Will display the log at the bottom, informing about
|
|
|
|
tracker and peer events.</li>
|
|
|
|
<li><tt class="docutils literal"><span class="pre">i</span></tt> toggles torrent info. Will show the peer list for each torrent.</li>
|
|
|
|
<li><tt class="docutils literal"><span class="pre">d</span></tt> toggle download info. Will show the block list for each torrent,
|
|
|
|
showing downloaded and requested blocks.</li>
|
|
|
|
<li><tt class="docutils literal"><span class="pre">p</span></tt> pause all torrents.</li>
|
|
|
|
<li><tt class="docutils literal"><span class="pre">u</span></tt> unpause all torrents.</li>
|
|
|
|
<li><tt class="docutils literal"><span class="pre">r</span></tt> force tracker reannounce for all torrents.</li>
|
2006-06-11 15:50:49 +02:00
|
|
|
<li><tt class="docutils literal"><span class="pre">f</span></tt> toggle show file progress. Displays a list of all files and the
|
|
|
|
download progress for each file.</li>
|
2005-08-17 19:19:20 +02:00
|
|
|
</ul>
|
|
|
|
<p>The list at the bottom (shown if you press <tt class="docutils literal"><span class="pre">d</span></tt>) shows which blocks has
|
|
|
|
been requested from which peer. The green background means that it has been
|
|
|
|
downloaded. It shows that fast peers will prefer to request whole pieces
|
|
|
|
instead of dowloading parts of pieces. It may make it easier to determine
|
|
|
|
which peer that sent the corrupt data if a piece fails the hash test.</p>
|
2006-05-20 19:59:17 +02:00
|
|
|
<img alt="unicode_support.png" src="unicode_support.png" />
|
2005-08-17 19:19:20 +02:00
|
|
|
<p>There's unicode support on linux, MacOS X and Windows.</p>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|