Wie schreibe ich eine einfache Bittorrent-Anwendung?

Lesezeit: 2 Minuten

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.

Benutzeravatar von Arvid
Arvid

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')

  • Wow. Sie haben ihr Ziel “einfach zu bedienen” wirklich erreicht. Das ist eine hervorragende Umsetzung!

    – Matt Tischler

    9. März 2012 um 14:53 Uhr

  • Können Sie mir sagen, was das macht? ses.listen_on(6881, 6891) und warum diese Werte?

    Benutzer745235

    1. August 2014 um 20:55 Uhr

  • 6881 ist der Abhörport. Wenn die Bindung an diesen Listen-Port fehlschlägt, versucht libtorrent, ihn um eins zu erhöhen und es erneut zu versuchen. Wenn es weiterhin fehlschlägt, bis es 6891 erreicht, hört es auf zu versuchen und schlägt einfach fehl. Fehler werden als Warnungen gemeldet.

    – Arvid

    1. August 2014 um 23:17 Uhr

  • Was soll für das Argument cl verwendet werden (in sys.argv[1]?) Ich habe versucht, sowohl einen Pfad zu a .torrent Datei und einen Magnetlink.

    – Galois

    1. Juni 2016 um 19:41 Uhr

  • der Pfad zu einer .torrent-Datei

    – Arvid

    1. Juni 2016 um 21:40 Uhr

1395910cookie-checkWie schreibe ich eine einfache Bittorrent-Anwendung?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy