Virtual OS/2 International Consumer Education
VOICE-Homepage: http://de.os2voice.org
Juli 2004

Inhaltsverzeichnis
< Vorherige Seite | Nächste Seite >
Artikelverzeichnis

editor@os2voice.org


Bittorrent und OS/2

Von Alex Taylor © Juli 2004, Übersetzung: Frank Pfeifer

Einleitung

BitTorrent ist ein Peer-to-Peer-System für den gemeinsamen Dateizugriff (P2P), welches sich zusehends steigender Beliebtheit erfreut. Wie alle P2P-Systeme kann BitTorrent dazu benutzt werden, alle Arten von Dateien herunterzuladen und zu vertreiben.

Entgegen den meisten P2P-Systemen kommt BitTorrent nicht als eigene Anwendung daher. Typischerweise installiert sich der BitTorrent-Klient als eine Hilfsanwendung im Internet-Browser. Man benutzt den Browser, um die Dateien zu finden, welche man benötigt und startet den Übertragungsvorgang durch Kllick auf einen entsprechenden Link.

Lädt man eine Datei mit BitTorrent herunter, wird zuerst eine kleine Datei übertragen, deren Name auf .torrent endet. Diese Datei enthält sogenannte "Metainformationen" bezügliche der eigentlich herunterzuladenden Datei. Die .torrent-Datei wird an den BitTorrent-Klienten übergeben, der dann die Metainformationen für die Übertragung der gewünschten Datei auswertet.

Jede Datei, welche mit BitTorrent heruntergeladen wird, ist in viele Stücke von relativ geringer Größe aufgeteilt. BitTorrent betreibt eine Art "Handel" dieser Stücke mit anderen Klienten (Peers), welche dieselbe Datei schon haben oder diese gerade selber herunterladen. Die grundsätzliche Idee hinter diesem System ist, das man keine Datei herunterladen kann, ohne sie gleichzeitig selber heraufzuladen, wodurch sichergestellt wird, das der Datenbedarf die Datenbereitstellung nicht überwiegt.

BitTorrent hat viele Anwendungsgebiete, sowohl legale als auch andere. So verteilt der Linux-Anbieter Mandrake beispielsweise die neuesten Versionen seines Produktes über BitTorrent.

Der offensichtliche Vorteil von BitTorrent liegt in der Art der Verteilung, welche es erlaubt, potentiell große Dateien für das Herunterladen verfügbar zu machen, ohne mit einer großen Bandbreite ausgestattet sein zu müssen, um mit dem anfallenden Bedarf zurechtkommen zu können. Stattdessen ist die Bandbreite über alle Anwender, welche Dateien herunterladen, verteilt.

Der Nachteil ist, das jeder der Dateien herunterlädt, einen Teil seiner Bandbreite für das Heraufladen zur Verfügung stellen muß. Für Modembenutzer mag dies lästig sein; Internetbenutzer mit einem sehr schnellen Zugang werden darin kein Problem sehen. Die meisten BitTorrent Implementierungen erlauben es, die Geschwindigkeit für das Heraufladen zu drosseln.

Anwender, die einen Internetzugang mit Volumenlimit ihr eigen nennen, sollten doch tunlichst ein Auge auf die gesamte ein- und ausgehenden Datenmenge werfen, wenn sie BitTorrent benutzen.

Die Anwendung von BitTorrent unter OS/2

Es gibt bereits eine große Zahl von BitTorrent-Implementierungen. Zum Glück für uns sind die originalen Referenzimplementierungen (zusammen mit den meisten ihrer Abkömmlinge) in Python realisiert: Eine Interpretersprache, welche von den meisten Betriebssystemen, inklusive OS/2, unterstützt wird.

Voraussetzungen

BitTorrent unter OS/2 oder eComStation benötigt einige Dinge:

Installationsschritte

  1. Entpacken Sie die Pythondateien an einem Ort Ihrer Wahl. Dies erzeugt ein 'python234' (oder ähnliches) Unterverzeichnis an diesem Ort. Zum Beispiel

    unzip python-2.3.4-emx-bin-060604.zip -d c:\usr\local
    

    plaziert die Python-Dateien im Verzeichnis c:\usr\local\python234.

    So einfach wie die Verwendung von BitTorrent ist auch die Installation von Python. Sie müssen nur die Dateien entpacken, solange Sie BT_GET.CMD (oder ein äquivalentes Skript) verwenden. Ein Editieren der CONFIG.SYS ist nicht notwendig.

    Falls Sie jedoch Python mit anderen Applikationen benutzen möchten, müssen Sie die Umgebung gemäß der Python-README einrichten.

    Beachten Sie, daß Python die EMX-Laufzeitumgebung benötigt. Falls Sie diese noch nicht auf Ihrem System installiert habe, dann tun Sie es jetzt.

  2. Entpacken Sie das BitTorrent-Paket in ein Verzeichnis Ihrer Wahl. Dies erzeugt ein Unterverzeichnis, welches die BitTorrent-Dateien enthält; Zum Beispiel so:

    unzip BitTorrent-3.4.2.zip -d e:\programs

    Dies plaziert die BitTorrent-Dateien im Verzeichnis E:\programs\BitTorrent-3.4.2. (Zur Vereinfachung würde ich vorschlagen, das Verzeichnis BitTorrent oder ähnlich zu nennen.)

  3. Plazieren Sie das Startskript BT_GET.CMD irgendwo auf dem System. Das kann in einem Verzeichnis, welches sich im PATH befindet (empfohlen), im BitTorrent-Verzeichnis oder anderswo sein.

    Sie müssen diese Datei editieren und die vier Parameter am Anfang Ihrem System entsprechend anpassen.
    Die vier Parameter sind:

    pythdir
    Die vollständige Pfadangabe des Verzeichnisses, das die Python-Dateien enthält.
    btdir
    Die vollständige Pfadangabe des Verzeichnisses, das die BitTorrent-Dateien enthält.
    savedir
    Die vollständige Pfadangabe des Verzeichnisses, in welchem die heruntergeladenen Dateien gespeichert werden sollen.
    uploadspeed
    Die maximale Geschwindigkeit (in KB/s), mit der Dateien zu anderen Rechnern hochgeladen werden können. Anwender mit einer Wählverbindung sollten diesen Wert herabsetzen.
  4. Rufen Sie das Eigenschaften-Menü des Browsers auf. (Ich gehe davon aus, daß Sie Mozilla benutzen; falls nicht, übernehmen Sie diese Anweisungen für Ihren Browser.)

    Öffnen Sie die Seite Hilfsanwendungen in der Navigator-Sektion. Drücken Sie die Schaltfläche Neuer Typ und geben Sie folgendes ein:

    MIME Type: application/x-bittorrent
    Description: BitTorrent
    Extension: torrent
    When a file of this type is encountered Wählen Sie Öffnen mit und tragen Sie den vollständigen Pfad für die BT_GET.CMD-Datei ein oder wählen Sie diesen aus.

  5. Falls Sie hinter einer Firewall sitzen (oder einem Breitbandrouter, welcher Network Address Translation [NAT - Anm. des Übers.] durchführt), stellen Sie sicher, daß es ankommenden TCP-Verbindungen erlaubt ist, über die Ports 6881 bis 6889 auf Ihr System zuzugreifen.

    Sind diese Ports blockiert, so wird BitTorrent nur herunter- aber nicht hochladen. Da BitTorrent nach dem Prinzip "Wie Du mir, so ich Dir" arbeitet, führt eine Blockierung der Ports zum Hochladen zu exterm niedrigen Herunterlade-Geschwindigkeiten.

Die Benutzung von BitTorrent

Ist BitTorrent einmal eingerichtet, ist die Benutzung extrem einfach.

Zuerst einmal benötigen Sie eine Datei, welche mit BitTorrent heruntergeladen werden soll. (Das Auffinden solcher Dateien ist nicht Bestandteil dieses Artikels; wahrscheinlich werden Sie BitTorrent einrichten, weil es einige Dateien oder anderes gibt, was Sie herunterladen möchten.)

Wenn Sie nun eine Datei von einer Internetseite herunterladen wollen, müssen Sie auf den Verweis zum Herunterladen der .torrent-Datei klicken. Falls alles korrekt konfiguriert wurde (in den Schritten oben), öffnet sich ein Befehlszeilenfenster und startet BT_GET.CMD mit der .torrent-Datei. Dies veranlaßt das Herunterladen mit BitTorrent.


Klicken Sie hier für ein größeres Bild.

Sie können den Vorgang jederzeit unterbrechen und den Klienten schließen, indem Sie [Q] drücken.

Beachten Sie, das BitTorrent imstande ist, abgebrochene Vorgänge wiederaufzunehmen. Falls Sie das Herunterladen einer Datei, von welcher Sie schon Teile haben, wieder starten, wird der BitTorrent-Klient automatisch versuchen, die Datei an ihrer letzten Position aufzugreifen - was aber nur funktioniert, falls die Datei sich noch im selben Verzeichnis befindet und nicht umbenannt wurde.

Falls Sie eine .torrent-Datei auf Ihre Festplatte heruntergeladen haben (und den Browser nicht wie oben beschrieben benutzt haben), können Sie das Herunterladen auch durch folgenden Befehl starten:

bt_get <.torrent file>

Vorausgesetzt, BT_GET.CMD befindet sich in einem Verzeichnis im PATH oder dem momentanen Verzeichnis.

Nachdem das Herunterladen beendet ist, bleibt das BitTorrent-Klientfenster solange offen, bis [Q] gedrückt wird. Lassen Sie den Klienten noch eine Weile arbeiten, nachdem er das Herunterladen beendet hat. Dies wird als höflich angesehen, da es anderen Anwendern erlaubt, die Datei noch eine zeitlang von Ihrem Rechner herunterzuladen (dies ist allein deswegen schon fair, weil Sie ja selber gerade von anderen Anwendern heruntergeladen haben). Augenscheinlich stellen einige Seiten diesbezüglich spezielle Anforderungen; jedenfalls sollten Sie den Klienten so lange laufen lassen, wie es Ihnen möglich ist.

Fallstricke

Im allgemeinen scheint es extrem gut zu arbeiten. Ich beobachtete gelegentliche SYS3175-Abstürze in dem BitTorrent-Klienten (oder, exakter, in Python/2), aber diese scheinen nur sehr selten aufzutreten. Was auch passiert, falls BitTorrent während des herunterladens abstürzt, brauchen Sie einfach nur den Vorgang zu reinitialisieren und das Herunterladen wird dort fortgesetzt, wo es unterbrochen wurde.

(Es gibt einige experimentelle Aktualisierungen auf der Python/2-Internetseite, welche möglicherweise das Problem beheben könnten. Ich habe diese nicht getestet. Für weitere Informationen schauen Sie in den Hinweis am unteren Ende dieser Seite.)


Anhang A: BT_GET.CMD

/*****************************************************************************
 * BT_GET.CMD  -  OS/2 BitTorrent Befehlszeilenstarter                       *
 * (Für dieses Skript muß Python/2 in der CONFIG.SYS konfiguiert werden)     *
 *****************************************************************************/

/* ------------------------------------------------------------------------- *
 * VERZEICHNISKONSTANTEN - DEM SYSTEM ENTSPRECHEND ANPASSEN                  *
 * ------------------------------------------------------------------------- */

/* Verzeichnis, in dem Python/2 installiert ist (normale Schrägstriche benutzen) */
pythdir = 'c:\usr\local\python233'

/* Verzeichnis, in dem die BitTorrent-Dateien installiert wurden */
btdir   = 'e:\network\bittorrent'

/* Verzeichnis für heruntergeladene Dateien */
savedir = 'f:\tmp'


/* ------------------------------------------------------------------------- *
 * BITTORRENT CONSTANTS - EDIT AS APPROPRIATE FOR YOUR SYSTEM                *
 * ------------------------------------------------------------------------- */

/* Maximale Übertragungsrate beim Hochladen zu anderne Anwendern */
uploadspeed = 25


/* ------------------------------------------------------------------------- *
 * ÄNDERUNGEN SOLLTEN HIERNACH NICHT MEHR NOTWENDIG SEIN                     *
 * ------------------------------------------------------------------------- */

IF RxFuncQuery('SysSetExtLIBPATH') = 1 THEN
    CALL RxFuncAdd 'SysSetExtLIBPATH', 'REXXUTIL', 'SysSetExtLIBPATH'


/* Prüfen des torrent-Dateinamens */
PARSE ARG torrent
torrent = STRIP( torrent )
torrent = STRIP( torrent, 'B', '"')
IF torrent = '' THEN DO
    SAY 'Torrent-Datei nicht angegeben.'
    RETURN
END

/* Feststellen des Namens der herunterzuladenden Datei (für das Abspeichern) */
savename = TargetFileName( torrent )
IF savename \= '' THEN
    saveas = '--saveas' savedir'\'savename
ELSE
    saveas = ''

/* Einige Angaben anzeigen */
SAY 'Python files:    ' pythdir
SAY 'BitTorrent files:' btdir
SAY 'Save directory:  ' savedir

/* Nun die Umgebung setzen */
CALL SETLOCAL
CALL DIRECTORY btdir

/* Python zu PATH und LIBPATH des Systems hinzufügen */
CALL SysSetExtLIBPATH pythdir, 'B'
path = VALUE('PATH',,'OS2ENVIRONMENT')
CALL VALUE 'PATH', pythdir'

/* Für Python erforderliche Variablen setzen */
CALL VALUE 'PYTHONHOME', pythdir, 'OS2ENVIRONMENT'
path = pythdir'/Lib;'pythdir'/Lib/plat-os2emx;'
path = path || pythdir'/Lib/lib-dynload;'pythdir'/Lib/site-packages;'
CALL VALUE 'PYTHONPATH', path, 'OS2ENVIRONMENT'
CALL VALUE 'TERMINFO',   pythdir'/terminfo', 'OS2ENVIRONMENT'
CALL VALUE 'TERM',       'ansi', 'OS2ENVIRONMENT'

/* Starten des Bittorrent-Downloaders für die Befehlszeile */
SAY
ADDRESS CMD 'python btdownloadcurses.py --max_upload_rate' uploadspeed saveas '"'torrent'"'

/* Umgebung wiederherstellen */
CALL ENDLOCAL

RETURN


/*****************************************************************************
 * TargetFileName()                                                          *
 *                                                                           *
 * Führt eine schnelle Bearbeitung der .torrent-Datei durch, um den          *
 * empfohlenen Dateinamen zum Sichern festzustellen.                         *
 *                                                                           *
 * EINGABE: Dateiname der .torrent-Datei                                     *
 * AUSGABE: Aus der .torrent-Datei abgeleiteter Name zum Speichern oder '',  *
 *          falls etwas schiefgegangen ist                                   *
 *****************************************************************************/
TargetFileName: PROCEDURE
    PARSE ARG torrent
    IF torrent = '' THEN RETURN ''

    CALL LINEIN torrent, 1, 0
    DO WHILE LINES( torrent ) > 0
        in = LINEIN( torrent )
        PARSE VAR in . '4:name' size ':' data
        IF ( size \= '') & ( data \= '') THEN
            fndata = SUBSTR( data, 1, size )
        ELSE
            fndata = ''
        IF fndata \= '' THEN LEAVE
    END
    CALL STREAM torrent, 'C', 'CLOSE'

RETURN fndata

Anhang B: Alternative BT_GET.CMD für eine Vollinstallation von Python

Um Python/2 komplett zu installieren, müssen Sie PATH, LIBPATH und die Umgebungsvariablen in die CONFIG.SYS eintragen und den Rechner neu starten (notwendig unter Warp 3 und Warp 4 mit FixPak-Level kleiner 4.5). Anschließend können Sie BT_GET2.CMD (oder eine angepasste .CMD) anstelle der obigen benutzen:

/*****************************************************************************
 * BT_GET.CMD  -  OS/2 BitTorrent Befehlszeilenstarter                       *
 * (Für dieses Skript muß Python/2 in der CONFIG.SYS konfiguiert werden)     *
 *****************************************************************************/

/* ------------------------------------------------------------------------- *
 * VERZEICHNISKONSTANTEN - DEM SYSTEM ENTSPRECHEND ANPASSEN                  *
 * ------------------------------------------------------------------------- */

/* Verzeichnis, in dem die BitTorrent-Dateien installiert wurden */
btdir   = 'e:\network\bittorrent'

/* Verzeichnis für heruntergeladene Dateien */
savedir = 'f:\tmp'


/* ------------------------------------------------------------------------- *
 * BITTORRENT CONSTANTS - EDIT AS APPROPRIATE FOR YOUR SYSTEM                *
 * ------------------------------------------------------------------------- */

/* Maximale Übertragungsrate beim Hochladen zu anderne Anwendern */
uploadspeed = 25


/* ------------------------------------------------------------------------- *
 * ÄNDERUNGEN SOLLTEN HIERNACH NICHT MEHR NOTWENDIG SEIN                     *
 * ------------------------------------------------------------------------- */

/* Prüfen des torrent-Dateinamens */
PARSE ARG torrent
torrent = STRIP( torrent )
torrent = STRIP( torrent, 'B', '"')
IF torrent = '' THEN DO
    SAY 'Torrent-Datei nicht angegeben.'
    RETURN
END

/* Feststellen des Namens der herunterzuladenden Datei (für das Abspeichern) */
savename = TargetFileName( torrent )
IF savename \= '' THEN
    saveas = '--saveas' savedir'\'savename
ELSE
    saveas = ''

/* Einige Angaben anzeigen */
SAY 'BitTorrent files:' btdir
SAY 'Save directory:  ' savedir
SAY


/* Starten des Bittorrent-Downloaders für die Befehlszeile */
od = DIRECTORY( btdir )
ADDRESS CMD 'python btdownloadcurses.py --max_upload_rate' uploadspeed saveas '"'torrent'"'
CALL DIRECTORY odir

RETURN


/*****************************************************************************
 * TargetFileName()                                                          *
 *                                                                           *
 * Führt eine schnelle Bearbeitung der .torrent-Datei durch, um den          *
 * empfohlenen Dateinamen zum Sichern festzustellen.                         *
 *                                                                           *
 * EINGABE: Dateiname der .torrent-Datei                                     *
 * AUSGABE: Aus der .torrent-Datei abgeleiteter Name zum Speichern oder '',  *
 *          falls etwas schiefgegangen ist                                   *
 *****************************************************************************/
TargetFileName: PROCEDURE
    PARSE ARG torrent
    IF torrent = '' THEN RETURN ''

    CALL LINEIN torrent, 1, 0
    DO WHILE LINES( torrent ) > 0
        in = LINEIN( torrent )
        PARSE VAR in . '4:name' size ':' data
        IF ( size \= '') & ( data \= '') THEN
            fndata = SUBSTR( data, 1, size )
        ELSE
            fndata = ''
        IF fndata \= '' THEN LEAVE
    END
    CALL STREAM torrent, 'C', 'CLOSE'

RETURN fndata

Daten und Quellen:

Bittorrent
Hersteller:
Preis: Freeware

Der Ursprung dieses Artikels war ein Usenetartikel von dink: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=qvaxlnqqnpbz.hnaiz30.pminews%40news.mi.comcast.giganews.com. Ich habe die Prozeduren modifiziert, um das Ganze etwas flexibler zu machen.

Die offizielle BitTorrent Web-Seite: http://bitconjurer.org/BitTorrent.
Brians BitTorrent FAQ & Guide: http://btfaq.com
Der OS/2-Port von Python: http://www.pcug.org.au/~andymac/python.html


Artikelverzeichnis
editor@os2voice.org
< Vorherige Seite | Inhaltsverzeichnis | Nächste Seite >
VOICE-Homepage: http://de.os2voice.org