Managing Torrents
Version 8 (Alan McGovern, 07/30/2009 12:52 AM)
| 1 | 7 | Alan McGovern | h1. Downloading Torrents |
|---|---|---|---|
| 2 | 1 | ||
| 3 | 5 | olivier dufour | h2. Simple Client |
| 4 | 5 | olivier dufour | |
| 5 | 4 | olivier dufour | <pre><code class="java"> |
| 6 | 8 | Alan McGovern | class MainClass |
| 7 | 8 | Alan McGovern | { |
| 8 | 8 | Alan McGovern | ClientEngine engine; |
| 9 | 8 | Alan McGovern | string savePath; |
| 10 | 1 | ||
| 11 | 8 | Alan McGovern | // savePath is the directory where downloads will be stored |
| 12 | 8 | Alan McGovern | public MainClass(string savePath) |
| 13 | 8 | Alan McGovern | { |
| 14 | 8 | Alan McGovern | // Create a basic ClientEngine without changing any settings |
| 15 | 8 | Alan McGovern | this.engine = new ClientEngine(new EngineSettings()); |
| 16 | 8 | Alan McGovern | this.savePath = savePath; |
| 17 | 8 | Alan McGovern | } |
| 18 | 1 | ||
| 19 | 8 | Alan McGovern | public void DownloadTorrent(string path) |
| 20 | 8 | Alan McGovern | { |
| 21 | 8 | Alan McGovern | // Open the .torrent file |
| 22 | 8 | Alan McGovern | Torrent torrent = Torrent.Load(path); |
| 23 | 1 | ||
| 24 | 8 | Alan McGovern | // Create the manager which will download the torrent to savePath |
| 25 | 8 | Alan McGovern | // using the default settings. |
| 26 | 8 | Alan McGovern | TorrentManager manager = new TorrentManager(torrent, savePath, new TorrentSettings()); |
| 27 | 1 | ||
| 28 | 8 | Alan McGovern | // Register the manager with the engine |
| 29 | 8 | Alan McGovern | engine.Register(manager); |
| 30 | 8 | Alan McGovern | |
| 31 | 8 | Alan McGovern | // Begin the download |
| 32 | 8 | Alan McGovern | manager.Start(); |
| 33 | 8 | Alan McGovern | } |
| 34 | 8 | Alan McGovern | } |
| 35 | 8 | Alan McGovern | </code></pre> |
| 36 | 5 | olivier dufour | |
| 37 | 5 | olivier dufour | h2. Advanced Client |
| 38 | 5 | olivier dufour | |
| 39 | 5 | olivier dufour | |
| 40 | 1 | <pre><code class="java"> |
|
| 41 | 1 | ||
| 42 | 1 | ||
| 43 | 1 | ClientEngine engine = new ClientEngine(new EngineSettings(downloadsPath, port)); |
|
| 44 | 1 | ||
| 45 | 1 | //DHT |
|
| 46 | 1 | DhtListener dhtListner = new UdpListener (new IPEndPoint (IPAddress.Any, port)); |
|
| 47 | 5 | olivier dufour | DhtEngine dht = new DhtEngine (dhtListner); |
| 48 | 1 | engine.RegisterDht(dht); |
|
| 49 | 1 | dhtListner.Start(); |
|
| 50 | 1 | //byte array of dht nodes can be null if you have never connect to DHT before today! |
|
| 51 | 1 | engine.DhtEngine.Start(nodes); |
|
| 52 | 1 | ||
| 53 | 1 | ||
| 54 | 1 | torrent = Torrent.Load("test.torrent"); |
|
| 55 | 5 | olivier dufour | TorrentManager manager = new TorrentManager(torrent, downloadsPath, torrentDefaults); |
| 56 | 5 | olivier dufour | |
| 57 | 5 | olivier dufour | //FastResume code need a BencodedDictionnary |
| 58 | 1 | //If you jsut start the torrent, you have no fast resume |
|
| 59 | 1 | // but if you have download a part of the torrent you can save fast resume data |
|
| 60 | 1 | //(manager.SaveFastResume()) and restore it later to do a quicker load |
|
| 61 | 1 | manager.LoadFastResume(new FastResume (BEncDictFastResume)); |
|
| 62 | 1 | ||
| 63 | 1 | engine.Register(manager); |
|
| 64 | 2 | olivier dufour | manager.Start (); |
| 65 | 1 | ||
| 66 | 1 | </code> |
|
| 67 | 1 | </pre> |