Zum Artikel
< >

Aktives GUI-Element

Statisches GUI-Element

Quelltext

WPS-Objekt

Datei/Pfad

Befehlszeile

Inhalt Eingabefeld

[Tastenkombination]

mehr

BitTorrent und OS/2
Teil 2

von Alex Taylor, © Mai 2007

BitTorrent ist ein beliebtes Protokoll für den Dateiaustausch von Peer zu Peer. Dieser Folgeartikel zu BitTorrent und OS/2 geht auf ein paar ungeklärte Fragen ein und wirft einen Blick auf weitere BitTorrent-Lösungen.

Einführung

2004 beschrieb ich in einem Artikel, wie man unter OS/2 das BitTorrent-Protokoll zum Herunterladen von Dateien nutzen kann.

Seitdem hat die verfügbare BitTorrent-Software erhebliche Fortschritte gemacht, und ich habe damit weitere Erfahrungen gesammelt. Aus diesem Grunde entschied ich mich, einen Folgeartikel zu verfassen, der sich mit diesen DIngen beschäftigt.

Der Python-Client

Mein ursprünglicher Artikel, sowie das beiliegende Startskript, behandelte Version 3.4.2 des offiziellen, Python-basierten BitTorrent-Clients. Derzeit ist die aktuelle Version des offiziellen Clients, der nun unter www.bittorrent.com zu finden ist, 5.x.

Leider ist die Nutzung von Versionen nach 3.x unter OS/2 mit einigen Schwierigkeiten verbunden. Version 4.0.x scheint mehr oder weniger zu funktionieren, solange nur eine Instanz läuft (obwohl sie bei mir eine Systemlast von 100% erzeugt). Der Versuch, mehr als einen Torrent auf einmal herunterzuladen, führt dazu, daß nichts mehr geschieht.

Neuere 4.x- und 5.x-Versionen funktionieren überhaupt nicht - anscheinend, weil sie das Python-Modul twisted benötigen, das bis jetzt nicht für OS/2 verfügbar ist.

Keine dieser neueren Vesionen funktioniert mit meinem Startskript (BT_GET.CMD), da sich die Befehlszeilensyntax des BitTorrent-Clients seit Version ein paarmal geändert hat. Version 4.0.x läßt sich - mit den obigen Einschränkungen - durch kleinere Änderungen an der Zeile, die BitTorrent aufruft, damit betreiben. Aufgrund der ungelösten Probleme mit Version 4 habe ich jedoch beschlossen, diese Änderungne hier nicht wiederzugeben.

Aus diesen Gründen stehen OS/2-Anwender praktisch vor der Wahl, entweder bei Version 3.4.2 zu bleiben oder einen anderen Client wie z.B. BitTornado einzusetzen (siehe unten). Ich würde letzteres empfehlen.

Version von Python/2

Ich habe BitTorrent mit mehreren unterschiedlichen Versionen von Python für OS/2 und auch jeweils unterschiedlichen Ergebnissen getestet.

Python 2.3.5 (EMX-Portierung)

Hierbei handelt es sich um die letzte Version von Python 2.3.x. Sie ist bei Andy MacIntyres Web-Site erhältlich. Sie funktioniert recht gut mit BitTorrent, auch wenn sie gelegentlich abstürzt. Meines Erachtens liegt dies wahrscheinlich an Einschränkungen innerhalb EMX (das mittlerweile ziemlich alt geworden ist). Leider bietet sie keine Unterstützung für Dateien mit einer Größe von mehr als 2 GB, was beim Herunterladen solcher Dateien Schwierigkeiten bereiten kann.

Python 2.4.x (EMX-Portierungen)

Die aktuelle Version von Python 2.4.x ist ebenfalls bei Andys Web-Site erhältlich. Sie scheint nicht ganz so reibungslos mit BitTorrent zu funktionieren wie 2.3.5; insbesondere füllt sich der Ausgabebildschirm oft mit unerfreulichen Fehlermeldungen. Das eigentliche Herunterladen mit BitTorrent scheint zu funktionieren (zumindest war dies während der kurzen Zeit der Fall, in der ich es ausprobiert habe), obwohl die Statusmeldungen weitgehend von den Fehlermeldungen verdeckt werden. Wie schon bei 2.3.5, so gibt es auch hier keine Unterstützung für Dateien mit einer Größe von über 2 GB.

Python 2.4.3 (Innotek GCC-Portierung)

Andy hat einen experimentellen Build von Version 2.4.3, der mit dem Innotek-Compiler erstellt wurde. Theoretisch sollte dieser vorzuziehen sein, da er viele der Einschränkungen von EMX nicht besitzt. Leider funktioniert er überhaupt nicht mit dem normalen BitTorrent-Client, weil er kein curses-Modul enthält. (Er könnte mit dem »headless« Befehlszeilenclient von BitTorrent funktionieren, der den BitTorrent- und BitTornado-Paketen beiliegt, aber er ist aufgrund der fehlenden Unterstützung für Konfigurationsparameter kaum benutzbar.)

Die Empfehlungen lautet daher, Python 2.3.5 für BitTorrent 3.4.2 zu verwenden oder die neueste EMX-Portierung für BitTornado - und einfach mit deren Einschränkungen zu leben.

Andere Clients

Die offizielle BitTorrent-Implementierung ist natürlich nicht die einzige. Ich werde kurz auf einige eingehen, die unter OS/2 zu funktionieren scheinen.

BitTornado

BitTornado ist ein alternativer, Python-basierter BitTorrent-Client, der sich vor einiger Zeit vom offiziellen Client abgespalten hat. Vom Funktionsumfang her hat er mehr oder weniger Schritt gehalten mit der offiziellen Version. Der wirkliche Vorteil ist jedoch, daß die neuesten Versionen unter OS/2 richtig funktionieren.

Da BitTornado auf dem offiziellen Client basiert, wird er genauso aufgerufen wie BitTorrent 3.4.2; tatsächlich kann man mein Skript BT_GET.CMD ohne weitere Mühen für BitTornado verwenden. Achten Sie darauf, das Quelltextpaket herunterzuladen und nicht das Windows-Installationsprogramm. Zum Zeitpunkt, als dieser Artikel verfaßt wurde, war dies BitTornado-0.3.18.zip. Dann fahren Sie einfach wie in meinem letzten Artikel beschrieben fort:

Bis jetzt hatte ich mit BitTornado keine Schwierigkeiten, einmal abgesehen von gelegentlichen - und anscheinend harmlosen - Nachrichten der Art Too many MuxWait semaphores.

CTorrent

CTorrent ist ein BitTorrent-Client für die Befehlszeile, der komplett in C geschrieben wurde und sich als schneller Client ohne Schnickschnack anpreist. Er läuft im einfachen Textmodus und generiert recht spärliche und einfache Ausgaben. Eine OS/2-Portierung ist bei Hobbes erhältlich. Der Quellcode liegt bei.

CTorrent besteht aus einer einzigen ausführbaren Datei und ist meines Wissens nicht von anderen Paketen abhängig. Der Aufruf lautet einfach:

ctorrent [ parameter ]

Die unterstützten Parameter lassen sich mit ctorrent -h anzeigen. Minimal sollte der Name einer Torrent-Datei angegeben werden.

Standardmäßig verwendet CTorrent einen anderen Portbereich als der offizielle Python-Client. Statt von 6881 an die Ports aufwärts bis 6999 zu benutzen, beginnt er bei Port 2706 und zählt bis Port 2106 herunter. Über die Befehlszeilenparameter lassen sich natürlich andere Ports angeben. Wie immer sollte man darauf achten, daß eine eventuell vorhandene Firewall oder der Router den Port-Bereich an das lokale System weiterleitet.

Im Gegensatz zum offiziellen Python-Client reserviert CTorrent den Platz auf der Festplatte sofort nach Beginn des Herunterladens. Lädt man beispielsweise eine 200 MB große Datei herunter, so nimmt diese Datei vom Beginn des Herunterladens an die vollen 200 MB Festplattenspeicher in Beschlag. Dies hat den Nachteil, daß man nicht einfach durch Blättern im Verzeichnis zwischen vollständigen und teilweise heruntergeladenen Dateien unterscheiden kann. Um dies zu klären, ist CTorrent selbst erforderlich (was bedeutet, daß man es nochmals Starten muß, falls es abgebrochen wurde).

Ich habe CTorrent nicht tiefergehend getestet. Ich habe geprüft, ob es läuft, und es scheint mit einigen Trackern zu funktionieren. Leider arbeitet es nicht mit dem Tracker zusammen, den ich am meisten verwende: alle Versuche, eine Verbindung herzustellen, schlagen mit der Fehlermeldung This torrent is not allowed on this tracker fehl, obwohl dieselben Torrents mit dem offiziellen BitTorrent-Client perfekt funktionieren.

CTorrent selbst ist seit einiger Zeit nicht aktualisiert worden. Es gibt jedoch eine abgespaltete Version namensEnhanced CTorrent, die aktiv entwickelt wird. Enhanced CTorrent scheint gegenüber dem originalen CTorrent einige Fehlerkorrekturen und andere Funktionen zu bieten, wie etwa Unterstützung für Dateien mit einer Größe von über 2 GB und die Möglichkeit, einzelnen Dateien innerhalb eines Torrents Priorität zu geben.

Eine OS/2-Portierung ist erhältlich. Leider zeigt sie beim Verbinden zu manchen Trackern die gleiche Fehlermeldung wie das originale CTorrent.

The Hunting of the Snark

The Hunting of the Snark ist ein einfacher BitTorrent-Client und -Server, der mit Java geschrieben wurde und als "experimentelle" Implementierung bezeichnet wird. Ähnlich CTorrent läuft er im normalen Textmodus. Es gibt zwar eine auf GNOME basierende GUI, aber nicht für OS/2.

Herunterzuladen ist nur eine Datei, snark.jar, die wie folgt mit Java ausgeführt werden kann:

java -jar snark.jar [ parameters ]

Dies natürlich unter der Voraussetzung, daß sich Java im PATH befindet. Die Parameter werden auf der Web-Site des Programms beschrieben.

Standardmäßig verwendet The Hunting of the Snark den gleichen Port-Bereich wie der Python-Client (6881 bis 6999); dies läßt sich über die Befehlszeile anpassen. Noch einmal: Achten Sie darauf, daß diese Ports für die Außenwelt sichtbar sind.

Wie schon CTorrent, so reserviert auch The Hunting of the Snark Speicherplatz für die gesamte Datei, sobald das Herunterladen beginnt.

The Hunting of the Snark habe ich ebenfalls nicht tiefergehend getestet. Es scheint mit Innotek Java 1.4.2 zu funktionieren und beginnt mit dem Herunterladen. Mehr kann ich nicht sicher sagen.

Keiner der oben genannten

Es werden viele weitere BitTorrent-Clients angeboten, die in verschiedenen Sprachen für unterschiedliche Plattformen entwickelt wurden. Bei den von mir beschriebenen habe ich mich davon überzeugt, daß sie unter OS/2 laufen. Es mag jedoch noch weitere geben.

Ein Hinweis zu Azureus

Einer der beliebtesten BitTorrent-Clients ist Azureus. Außer einer schönen Bedieneroberfläche bietet Azureus einige Funktionen, die bei den meisten anderen BitTorrent-Clients nicht zur Verfügung stehen. Es wurde mit Java entwickelt und wird oft als plattformunabhängig angepriesen. Man sollte als meinen, daß es unter OS/2 läuft, nicht wahr?

Tut es aber nicht.

Im Gegensatz zur öffentlichen Wahrnehmung handelt es sich bei Azureus nicht um eine "reine" Java-Anwendung. Es nutzt eine plattformspezifische Entwicklungsbibliothek namens SWT (bekannt durch das Projekt Eclipse), die leider (noch) nicht für OS/2 verfügbar ist.

Arctic Torrent (ein minimalistischer BitTorrent-Client für Windows) scheint mit Odin zu funktionieren, führt hier aber zu einer 100%igen CPU-Last. Ich habe damit nichts heruntergeladen.

Startskripte

Mit meinem letzten Artikel habe ichzwei Startskripte zur Verfügung gestellt: BT_GET.CMD, das Hauptskript für moderne OS/2-Systeme, und das alternative BT_GET2.CMD zur Verwendung mit älteren OS/2-Versionen, die die Erweiterung des LIBPATH (auch bekannt als BEGINLIBPATH / ENDLIBPATH) nicht unterstützen.

Zu der Zeit hatte ich entsprechend IBMs Dokumentation angenommen, daß die Erweiterung des LIBPATH (und die entsprechende Unterstützung in REXXUTIL) nicht vor Warp Server for e-business (oder Warp 4 FixPak 13+) verfügbar war. Seitdem bin ich zu dem Schluß gekommen, daß diese Unterstützung zu OS/2 bereits mit FixPak 35 für Warp 3 und FixPak 6 für Warp 4 hinzugefügt wurde. IBM hat sich nur nicht um die Dokumentation gekümmert, bis WSeB herausgebracht wurde.

Daher habe ich beschlossen, BT_GET2.CMD nicht weiter zu unterstützen. Ich sehe keinen Grund, warum es jemand benötigen würde. Wer Warp 3, Warp Connect, Warp Server oder Warp 4 betreibt, kann auch BT_GET.CMD einsetzen, sofern FixPak 35/6 (oder besser) installiert ist.

Die neueste Version von BT_GET.CMD (Version 1.02 als dieser Artikel verfaßt wurde) ist auf meiner Web-Site erhältlich. Seit der ersten Version habe ich die Option zur Änderung der verwendeten Ports hinzugefügt. Diese werden am Beginn der Datei über REXX-Variablen festgelegt.

Fazit

Wie alle aktiv entwickelte Software, entwickelt sich BitTorrent weiter. Ich bin zuversichtlich, daß die OS/2-Anwender nicht abgehängt werden (wie dies schon so oft geschehen ist), auch wenn es besorgniserregende Anzeichen gibt.

Ich gedenke, BitTorrent und die verschiedenen Aspekte des Betriebs unter OS/2 im Auge zu behalten. Sollte jemand mehr dazu wissen oder herausfinden, als hier besprochen wurde, kann er sich gern an mich wenden.

Übersetzung: Christian Hennecke
Korrektur: Karl-Heinz Markus
Daten und Quellen

BitTorrent (offizielle Web-Site): http://www.bittorrent.com
Python für OS/2: http://members.pcug.org.au/~andymac/python.html
BitTornado: http://bittornado.com/
CTorrent: http://ctorrent.sourceforge.net/?action=what
Enhanced CTorrent (OS/2-Portierung): http://eros2.by.ru/miscfiles_en.shtml
The Hunting of the Snark: http://klomp.org/snark/
BT_GET: http://www.cs-club.org/~alex/programming/rexx/#bt_get