Enable DHT¶
1
2 public void StartDht (ClientEngine engine, int port)
3 {
4 // Send/receive DHT messages on the specified port
5 IPEndPoint listenAddress = new IPEndPoint (IPAddress.Any, port);
6
7 // Create a listener which will process incoming/outgoing dht messages
8 DhtListener listener = new UdpListener (listenAddress);
9
10 // Create the dht engine
11 DhtEngine dht = new DhtEngine (listener);
12
13 // Connect the Dht engine to the MonoTorrent engine
14 engine.RegisterDht (dht);
15
16 // Start listening for dht messages and activate the DHT engine
17 listener.Start ();
18
19 // If there are existing DHT nodes stored on disk, load them
20 // into the DHT engine so we can try and avoid a (very slow)
21 // full bootstrap
22 byte[] nodes = null;
23 if (File.Exists (path))
24 nodes = File.ReadAllBytes (nodes);
25 dht.Start (nodes);
26 }
27
28 public void StopDht (DhtEngine dht, DhtListener listener)
29 {
30 // Stop the listener and dht engine. This does not
31 // clear internal data so the DHT can be started again
32 // later without needing a full bootstrap.
33 listener.Stop ();
34 dht.Stop ();
35
36 // Save all known dht nodes to disk so they can be restored
37 // later. This is *highly* recommended as it makes startup
38 // much much faster.
39 File.WriteAllBytes (path, dht.SaveNodes ());
40 }