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.
Bittorrent Client
Sind die bei BitTorrent nicht getrennt? Da gibt's doch schon verschiedene GUIs, also Kommandozeile, curses und ich glaube GTK.
-
- User
- Beiträge: 18
- Registriert: Samstag 2. Dezember 2006, 12:17
Es gibt zwar verschiedene GUIs, aber die arbeiten fast alle unabhängig.BlackJack hat geschrieben:Sind die bei BitTorrent nicht getrennt? Da gibt's doch schon verschiedene GUIs, also Kommandozeile, curses und ich glaube GTK.
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.
-
- 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?
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?
das ist immer ein Grund. Ohne bitflu was Böses zu wollen...tuxthekiller hat geschrieben: Oder mein neues Ziel ist: machs noch besser
eine Implementierung des Bittorrent Protokolls fehlt. Aber das wäre ja der Anreiz.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?
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
-
- 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?
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?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Twisted ist der Teil der generell für jegliche Art von Netzwerkkommunikation verwendet wird, Nevow ist der Web-Teil.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?
Mit Twisted Core.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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.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?
- 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.
dev
genau, aber ich wollte ein paar Schmankerl auch noch für später aufheben.Leonidas hat geschrieben:twisted.words - für Zugang über IRC und Jabberdev hat geschrieben:twisted.conch - für den telnet Zugang ggf.
Das könnte durchaus ein richtig nettes Teil werden.
Ciao,
dev
-
- 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
Das ganze sollte auch noch so sein, dass die Seeds ohne Leecher zuerst gestoppt werden.
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
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
Das ganze sollte auch noch so sein, dass die Seeds ohne Leecher zuerst gestoppt werden.
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
Nun, Du fängst am besten mit dem BitTorrent Protokoll an, gekoppelt an einen ganz simplen Console Client.tuxthekiller hat geschrieben: Nun solchen wir den Worten auch erste Taten folgen lassen, fragt sich nur, wer für was zuständig ist.
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
-
- 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).
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).
Was willst Du überhaupt mit Telnet oder SSH? Ich denke es soll ein BitTorrent-Client werden!?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.
Die "offizielle" Beschreibung des Protokolls gibt's hier:Und ich finde keine Dokumentation, wo drinsteht, wie Bittorrent im Detail funktioniert. (Wie werden Daten übertragen, wie funktioniert der Handshake).
http://www.bittorrent.org/protocol.html
-
- User
- Beiträge: 18
- Registriert: Samstag 2. Dezember 2006, 12:17
Der Client läuft als Daemon und irgendwie muss ich halt drauf zugreifen.BlackJack hat geschrieben:Was willst Du überhaupt mit Telnet oder SSH? Ich denke es soll ein BitTorrent-Client werden!?
Das hab ich schon gesehen, aber ich finds nen bisschen dünn. Ich werds mir aber nochmal angucken.BlackJack hat geschrieben: Die "offizielle" Beschreibung des Protokolls gibt's hier:
http://www.bittorrent.org/protocol.html
Ein Problem, welches sich erst wirklich stellt, wenn der Client überhaupt implementiert ist, oder?tuxthekiller hat geschrieben:Der Client läuft als Daemon und irgendwie muss ich halt drauf zugreifen.BlackJack hat geschrieben:Was willst Du überhaupt mit Telnet oder SSH? Ich denke es soll ein BitTorrent-Client werden!?