Wie schreibe ich eine einfache Bittorrent-Anwendung? So etwas wie ein “Hallo Welt” mit einer BitTorrent-Bibliothek, ich meine eine einfachste Anwendung, um die Funktionsweise von BitTorrent zu verstehen. Ich würde eine Python- oder C/C++-Implementierung bevorzugen, aber es kann jede Sprache sein. Plattform ist auch kein Problem, aber ich würde Linux bevorzugen.
Empfehlungen für die Bibliothek folgen, ich habe den Quellcode für eine (ich glaube offizielle Bittorrent) von heruntergeladen – http://sourceforge.net/projects/bittorrent/develop. Aber ich sehe viele andere Bibliotheken an http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries. Über Empfehlungen hierzu würde ich mich freuen.
So testen Sie eine Anwendung, wenn Sie nur einen Laptop haben.
Sie sollten libtorrent (Rasterbar) ausprobieren. http://libtorrent.org
Wenn Sie Ihren Client in Python schreiben möchten, installieren Sie ihn unter Linux mit:
sudo apt-get install python-libtorrent
Ein sehr einfaches Beispiel für Python-Code zum Herunterladen eines Torrents:
import libtorrent as lt
import time
import sys
ses = lt.session({'listen_interfaces': '0.0.0.0:6881'})
info = lt.torrent_info(sys.argv[1])
h = ses.add_torrent({'ti': info, 'save_path': '.'})
s = h.status()
print('starting', s.name)
while (not s.is_seeding):
s = h.status()
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, s.state), end=' ')
alerts = ses.pop_alerts()
for a in alerts:
if a.category() & lt.alert.category_t.error_notification:
print(a)
sys.stdout.flush()
time.sleep(1)
print(h.status().name, 'complete')
Lesen Sie die Spezifikation (wiki.theory.org/BitTorrentSpecification), Code schreiben 🙂
– Vijay Mathew
23. März 2011 um 5:03 Uhr