Aufwand Bittorrent Client programmieren



  • Hallo,
    ich überlege mir in 2 Semester als Semesterprojekt ein Bittorrent-Client zu programmieren. Allerdings weiß ich nicht wie aufwändig das wird. 🙂
    Im 5. Semester werden uns Client/Server-Kenntnisse vermittelt, so dass ich dann eine gewisse Vorbildung habe.
    Ist das Protokoll schwer zu implementieren?
    Für das Projekt hat man 12 ECTS. Ist das ausreichend oder geht das Richtung Bachelorarbeit?

    L. G.
    Steffo



  • Tu es nicht! Der Aufwand ist zu gross.



  • knivil schrieb:

    Tu es nicht! Der Aufwand ist zu gross.

    Dann wäre das eher eine Bachelorarbeit?

    L. G.
    Steffo



  • Willst du komplett alles selbst machen? Sonst gäbe es da zB libtorrent.

    Das eigentliche Protokoll ist ja nicht so schwer, aber es gibt halt einiges noch darum mittlerweile (DHT, PEX, ...): http://www.bittorrent.org/beps/bep_0003.html



  • Eine Lib wollte ich nicht benutzen, sondern alles implementieren, was Client-seitig ansteht.



  • Wäre das überhaupt ein geeignetes Thema für eine Bachelorarbeit? Ich bin mir nicht sicher, wie da die Anforderungen sind, ich hab noch Diplom. Aber ich würde da schon was halbwegs eigenständiges erwarten, und nicht einfach nachprogrammieren, was es schon gibt.
    Ich würds auch nicht selber machen. Kenn das Protokoll nicht im Detail, aber ich seh überhaupt keinen Grund, das Rad neu zu erfinden. Es wär im Grunde wohl nicht sooo schwer, aber du hättest sicherlich einiges mit dem Finetuning zu tun und würdest dieselben Fehler wiederholen, die die anderen schon hatten und schon lang behoben haben (und wohl auch neue machen).
    Interessanter wäre vielleicht, das Bittorrent Protokoll in einem neuen Kontext einzusetzen, in irgendein anderes System zu integrieren, wo es noch nicht verwendet wurde aber irgendwelchen neuen Vorteile bringen könnte, und dabei eine bestehende lib für das Protokoll selbst verwenden.



  • Ich wollte das ganze in Scala implementieren. Eine Implementierung in Scala gibt es noch nicht.
    Kann schon sein, dass es für eine Bachelor-Arbeit zu einfach ist, deshalb wollte ich das in meinem Semesterprojekt implementieren.



  • Aber es gibt sicher eine Java Implementierung - früher war dieser fette Client in Java weit verbreitet. Und die Java Implementierung kannst du auch in Scala verwenden, somit gibts keinen akuten Bedarf an einer Scala Implementierung. Ist ja das schöne an Scala, es stehen schon umfangreiche Java Bibliotheken zur Verfügung und man muss nicht alles nach Scala portieren.



  • Das Argument mit Java verstehe ich nicht. Wenn Java Scala ersetzen kann, dann gäbe es keinen Bedarf an Scala.
    Dass man mit Scala Java-Libs verwenden kann und umgekehrt, ist klar, aber dennoch ist es aus Entwicklersicht durchaus sinnvoll z. B. Scala Java vorzuziehen, aufgrund z. B. einfacherer Wartung oder besserer Parallelisierungsmöglichkeiten.

    Wie dem auch sei, eine Bachelorarbeit werde ich daraus sicherlich nicht machen, wenn, dann eine Semesterarbeit. Bis dahin habe ich noch knapp 2 Semester Zeit und kann meine Kenntnisse in Scala verbessern, so dass ich den Aufwand besser einschätzen kann.

    Danke für eure Antworten!

    L. G.
    Steffo



  • Dasselbe Argument wie vorher - das Rad nicht neu erfinden. Wenn es eine Java Implementierung gibt, die man in Scala benutzen kann, gibt es keinen wirklichen Bedarf an einer nativen Scala Implementierung. Für den Entwickler, der die Bibliothek dann benutzt, spielt es ja keine Rolle.



  • @Steffo
    Worum geht es denn in der Semesterarbeit?
    Einfach nur darum irgend ein Projekt fertigzubekommen? Dann würde sich ein BT Client vermutlich eignen. Den ganzen Kram wie DHT & PEX musst du ja nicht implementieren, die Sachen sind ja optional.

    Oder geht es darum irgendwas besonders schlau zu machen? Dann wäre ein BT Client vielleicht nicht die beste Wahl, denn irgendwelche besonderen Optimierungen sind da vermutlich nicht so trivial. Also z.B. der Algorithmus der entscheidet welche Blöcke zu welchem Zeitpunkt von welchem Peer angefordert werden sollen um die eigene Download-Geschwindigkeit zu optimieren, oder an welchen Peer man wie schnell Daten senden soll um den Throughput des Swarms zu optimieren. Da verschiedene Algorithmen zu implementieren und dann auszuprobieren übersteigt vermutlich den Aufwand den man sich für eine Semesterarbeit antun möchte bzw. kann.



  • hustbaer schrieb:

    Einfach nur darum irgend ein Projekt fertigzubekommen?

    So könnte man es sicherlich auch ausdrücken.
    Die optionalen Sachen wie DHT & PEX könnte ich dann als Hobby in meiner Freizeit implementieren.

    @Mechanics: Das Rad neu zu erfinden kann aber als Lerneffekt sehr sinnvoll sein. Genau deswegen studiere ich ja!


Log in to reply