Bittorrent Client

Du hast eine Idee für ein Projekt?
Antworten
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

Ich möchte einen Bittorrent Client programmieren. Dazu möchte ich die wichtigen Sachen aus den Dateien vom Originalclient importieren. Ich hoffe ich wisst wie ich das meine. Leider habe ich keinen Plan was ich da importieren muss. Kann mir vielleicht wer helfen?

Oder soll ich lieber einen komplett eigenen Client programmieren?

Sourcecode gibts hier: http://download.bittorrent.com/dl/BitTo ... 0.2.tar.gz

Erstmal möchte ich überhaupt Bittorrent Fähigkeit haben und dann die Oberfläche programmieren.
Das ist auch der Grund wieso ich einen eigenen Client programmieren will. Ich finds besonders bei nem Bittorrent Client wichtig, dass Core und GUI getrennt sind.
BlackJack

Sind die bei BitTorrent nicht getrennt? Da gibt's doch schon verschiedene GUIs, also Kommandozeile, curses und ich glaube GTK.
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

BlackJack hat geschrieben:Sind die bei BitTorrent nicht getrennt? Da gibt's doch schon verschiedene GUIs, also Kommandozeile, curses und ich glaube GTK.
Es gibt zwar verschiedene GUIs, aber die arbeiten fast alle unabhängig.

Kennst du MLDonkey? So ähnlich hatte ich das vor.
Also dass ein Core (immer) läuft und man entweder per GUI, Kommandozeile oder per WebGUI drauf zugreifen kann.

EDIT: Aber erstmal will ich mich um den Core kümmern.
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

Sowas wie bitflu?

Wenn Du das mit Twisted und Nevow machen willst, wäre ich a) interessiert und b) u.U. auch geneigt Zeit zu investieren.

Ciao,
dev
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

Bitflu ist genau das was ich suche. Vielleicht muss ich garkeinen eigenen schreiben...

Oder mein neues Ziel ist: machs noch besser

Meinst du mit Twisted und Nevow bekommt man das gut hin? Ist in einem Paket schon Bittorrent "dabei" oder muss man das selber schreiben?
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

tuxthekiller hat geschrieben: Oder mein neues Ziel ist: machs noch besser
das ist immer ein Grund. Ohne bitflu was Böses zu wollen...
tuxthekiller hat geschrieben:Meinst du mit Twisted und Nevow bekommt man das gut hin? Ist in einem Paket schon Bittorrent "dabei" oder muss man das selber schreiben?
eine Implementierung des Bittorrent Protokolls fehlt. Aber das wäre ja der Anreiz.

Dafür ist das drumrum bereits da - die Architektur um z.B. sowohl eine ssh als auch eine http Schnittstelle anzubieten, real-time update der html-Seiten,...

Ciao,
dev
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

Twisted ist ein Framework für Web und so, das weiß ich, da ich erst gestern einen Artikel drüber gelesen habe. Aber wofür ist Nevow? Das kann ich aus den englischen Seiten nicht so richtig rauserkennen.

EDIT: Soll Twisted eigendlich nur für den WebGUI Teil zuständig sein oder auch für den Bittorrent Teil? Wenn ja, mit welchem Modul?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

tuxthekiller hat geschrieben:Twisted ist ein Framework für Web und so, das weiß ich, da ich erst gestern einen Artikel drüber gelesen habe. Aber wofür ist Nevow?
Twisted ist der Teil der generell für jegliche Art von Netzwerkkommunikation verwendet wird, Nevow ist der Web-Teil.
tuxthekiller hat geschrieben:EDIT: Soll Twisted eigendlich nur für den WebGUI Teil zuständig sein oder auch für den Bittorrent Teil? Wenn ja, mit welchem Modul?
Mit Twisted Core.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

tuxthekiller hat geschrieben:Twisted ist ein Framework für Web und so, das weiß ich, da ich erst gestern einen Artikel drüber gelesen habe. Aber wofür ist Nevow? Das kann ich aus den englischen Seiten nicht so richtig rauserkennen.

EDIT: Soll Twisted eigendlich nur für den WebGUI Teil zuständig sein oder auch für den Bittorrent Teil? Wenn ja, mit welchem Modul?
Wie Leonidas schon schrieb wäre Twisted quasi für alles zuständig. Und hat mit Web erstmal nichts zu tun, sondern stellt den Rahmen zu Verfügung um auf verschiedensgestaltige Ereignisse zu reagieren.
  • twisted.internet aus core - für alles was mit Kommunikation, Scheduling zu tun hat

    nevow & athena - nutzen twisted.web und wären für HTML und AJAX zuständig

    twisted.conch - für den telnet Zugang ggf.
Ciao,
dev
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

dev hat geschrieben:twisted.conch - für den telnet Zugang ggf.
twisted.words - für Zugang über IRC und Jabber ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

Leonidas hat geschrieben:
dev hat geschrieben:twisted.conch - für den telnet Zugang ggf.
twisted.words - für Zugang über IRC und Jabber ;)
genau, aber ich wollte ein paar Schmankerl auch noch für später aufheben. 8)

Das könnte durchaus ein richtig nettes Teil werden.

Ciao,
dev
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

An Jabber hab ich auch gedacht :)

Sollten wir statt Telnet vielleicht lieber SSH nehmen? Am Besten wäre vielleicht beides oder ein optionales Modul für SSH.

Wie soll der Client eigendlich aufgebaut sein? Die verschiedenen Sachen in einzelne Dateien oder alles in Eine? Mit großen Projekten habe ich wenig Erfahrung.

Was noch wichtig wäre: Ne Warteschlange die man auch für verschiedene Tracker einzeln anlegen kann, da man auf manchen Trackern (Stichwort ALT) die Anzahl von Download auf 2 und die Seeds auf 8 begrenzt sind :roll:

Das ganze sollte auch noch so sein, dass die Seeds ohne Leecher zuerst gestoppt werden. :D

Nun solchen wir den Worten auch erste Taten folgen lassen, fragt sich nur, wer für was zuständig ist.

Ich muss mich erstmal richtig in Python einarbeiten, bisher habe ich noch kein (deutschsprachiges) Tutorial oder so gefunden. Wenn ich dann eins habe gehts ganz schnell bei mir :twisted:
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

tuxthekiller hat geschrieben: Nun solchen wir den Worten auch erste Taten folgen lassen, fragt sich nur, wer für was zuständig ist.
Nun, Du fängst am besten mit dem BitTorrent Protokoll an, gekoppelt an einen ganz simplen Console Client.
Reduziert wirklich nur auf das Nötigste.
Quasi nur unit tests.

Denn ohne das ist alles andere Makulatur.
Jetzt schon über ALT etc. nachzudenken ist imho viel zu früh.

Ich stelle gerne eine trac/svn Instanz dafür zur Verfügung.

Wenn die Protokollimplementierung dann mal ein gewisses Maß an Reife gewonnen hat,
kann ich z.B. den Nevow/Athena (Web) Teil anflanschen.

Ciao,
dev
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

Ich habe jetzt (erst) richtig angefangen. Es gibt aber einige Probleme. :(

Zum Beispiel ist nirgendwo wirklich beschrieben, wie man den Telnet Server von twisted nutzt. In der Dokumentation ist nur SSH beschrieben und dort auch nur, wie man einen Client programmiert. Ich habe vieles probiert, aber bin noch zu keinem brauchbaren Ergebnis gekommen. Ich hoffe mir kann wer helfen. Ich kann leider keine Fehlermeldung posten, da es ja eigentlich keinen wirklichen Fehler gibt.

Und ich finde keine Dokumentation, wo drinsteht, wie Bittorrent im Detail funktioniert. (Wie werden Daten übertragen, wie funktioniert der Handshake).
BlackJack

tuxthekiller hat geschrieben:Zum Beispiel ist nirgendwo wirklich beschrieben, wie man den Telnet Server von twisted nutzt. In der Dokumentation ist nur SSH beschrieben und dort auch nur, wie man einen Client programmiert. Ich habe vieles probiert, aber bin noch zu keinem brauchbaren Ergebnis gekommen. Ich hoffe mir kann wer helfen. Ich kann leider keine Fehlermeldung posten, da es ja eigentlich keinen wirklichen Fehler gibt.
Was willst Du überhaupt mit Telnet oder SSH? Ich denke es soll ein BitTorrent-Client werden!?
Und ich finde keine Dokumentation, wo drinsteht, wie Bittorrent im Detail funktioniert. (Wie werden Daten übertragen, wie funktioniert der Handshake).
Die "offizielle" Beschreibung des Protokolls gibt's hier:

http://www.bittorrent.org/protocol.html
tuxthekiller
User
Beiträge: 18
Registriert: Samstag 2. Dezember 2006, 12:17

BlackJack hat geschrieben:Was willst Du überhaupt mit Telnet oder SSH? Ich denke es soll ein BitTorrent-Client werden!?
Der Client läuft als Daemon und irgendwie muss ich halt drauf zugreifen. ;)
BlackJack hat geschrieben: Die "offizielle" Beschreibung des Protokolls gibt's hier:

http://www.bittorrent.org/protocol.html
Das hab ich schon gesehen, aber ich finds nen bisschen dünn. ;) Ich werds mir aber nochmal angucken.
BlackJack

tuxthekiller hat geschrieben:
BlackJack hat geschrieben:Was willst Du überhaupt mit Telnet oder SSH? Ich denke es soll ein BitTorrent-Client werden!?
Der Client läuft als Daemon und irgendwie muss ich halt drauf zugreifen. ;)
Ein Problem, welches sich erst wirklich stellt, wenn der Client überhaupt implementiert ist, oder?
Antworten