web-dev-qa-db-fra.com

Comment écrire une simple application Bittorrent?

Comment écrire une application bittorrent simple. Quelque chose comme un "bonjour le monde" utilisant une bibliothèque bittorrent, je veux dire une application plus simple pour comprendre le fonctionnement de bittorrent. Je préférerais un python ou une implémentation C/C++, mais cela peut être n'importe quel langage. La plate-forme n'est pas un problème non plus, mais je préférerais Linux.

Recommandations pour la bibliothèque à suivre, j'ai téléchargé le code source pour un (je pense que bittorrent officiel) à partir de - http://sourceforge.net/projects/bittorrent/develop . Mais, je vois beaucoup d'autres bibliothèques sur http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries . J'apprécierais des recommandations à ce sujet.

Comment tester une application si vous n'avez qu'un seul ordinateur portable.

34
Vivek Sharma

Vous devriez essayer libtorrent (rasterbar). http://libtorrent.org

Si vous souhaitez écrire votre client en python, sur linux, installez-le avec:

Sudo apt-get install python-libtorrent

Un exemple très simple de code python pour l'utiliser pour télécharger un torrent:

import libtorrent as lt
import time
import sys

ses = lt.session()
ses.listen_on(6881, 6891)

info = lt.torrent_info(sys.argv[1])
h = ses.add_torrent({'ti': info, 'save_path': './'})
print 'starting', h.name()

while (not h.is_seed()):
   s = h.status()

   state_str = ['queued', 'checking', 'downloading metadata', \
      'downloading', 'finished', 'seeding', 'allocating', 'checking fastresume']
   print '\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \
      (s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, \
      s.num_peers, state_str[s.state]),
   sys.stdout.flush()

   time.sleep(1)

print h.name(), 'complete'
80
Arvid