2015年8月5日水曜日

P2P探訪 hetimatorrent で mainline dht を サポートしました。

hetimatorrent で mainline dht (bep5) を サポートしました。

--

 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
a() {
  KNode node = new KNode(new HetiSocketBuilderChrome(), verbose: true);
  String localIp = "0.0.0.0";
  int localPort = 28080;
  //
  //
  node.start(ip: localIp, port: localPort).then((_) {
    node.onGetPeerValue.listen((KGetPeerValue v) {
      print("---onGetPeerValue ${v.ipAsString} ${v.port} ${v.infoHashAsString} ");
    });
  });

  //
  // initial node
  String initailNodeIp = "0.0.0.0";
  int initailNodePort = 38080;
  node.addBootringNode(initailNodeIp, initailNodePort);
  
  //
  // search target
  List<int> infoHash = new List.filled(20, 4);
  node.startSearchValue(new KId(infoHash), 18080, getPeerOnly: true);
  
  new Future.delayed(new Duration(minutes:30)).then((_){
    print(node.rootingtable.toInfo());
    return node.stop();
  });

}
--

hetimatorrent は名前の通り、torrentプロトコルでまデータの共有ができます。
pure dartlang で書かれています。
今は、chrome application のみサポートしていますが、今後拡張予定です。`


What is DHT?

すでにP2Pネットワークに参加しているNodeを紹介してもらうと、それを元に、P2Pネットワークへ参加します。数10秒後には、数十回の問い合わせで。P2Pネットワークからデータを発見できるようになります。

Source

- hetimatorrent
  https://github.com/kyorohiro/dart_hetimatorrent
- heitnanet
  https://github.com/kyorohiro/dart_hetimanet
- dht sample
  https://github.com/kyorohiro/dart_hetimatorrent/tree/master/example/TorrentDHT
- bep5
 http://www.bittorrent.org/beps/bep_0005.html
- Kademlia; A Peer-to-peer Information System Based on the XOR Metric.
 http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf


-------
Kyorohiro work

0 件のコメント:

コメントを投稿