SSL/TLS-Netzwerkprogrammierung mit Boost.Asio, Teil 2: Server-Programmierung

Seite 4: Kompatibilität

Inhaltsverzeichnis

Die vorliegende Boost.Asio-Implementierung des WOPR-Servers ist hoch portabel. Der Server aus der ursprünglichen Artikelreihe von 2010 war zwar ebenfalls plattformübergreifend, dabei jedoch auf Unix- beziehungsweise POSIX-kompatible Betriebssysteme oder Subsysteme beschränkt. Er benötigte den Systemcall select().

Dank der Implementierung von Boost.Asio fällt die Begrenzung weg: Mit einer Code-Basis können Entwickler transparent im Unix/POSIX-Bereich auf moderne Alternativen zu select() setzen, wie epoll() (Linux) oder kqueue (FreeBSD). Zusätzlich unterstützt Boost.Asio Unix/POSIX-inkompatible Ansätze wie natives Windows. Zur Portierung müssen Entwickler keine Zeile am Quelltext ändern.

Die alte und die neue Implementierung des WOPR-Beispiels sind vollständig interoperabel. Der neue Boost.Asio-WOPR-Server kann mit allen in der ursprünglichen Beitragsreihe implementierten und eingesetzten Clients kommunizieren. Angefangen mit der "Sparvariante" openssl s_client lassen sich auch alle WOPR-Clients, also Version 1.00, 1.01 und 2.00, darauf verbinden.

Der nächste Teil der Artikelserie behandelt die Implementierung eines Clients (Version 3.00) mit Boost.Asio. Zwei unterschiedliche Clients werden die Grenzen der Boost.Asio-Portabilität demonstrieren, die es trotz der hohen Quellcodeportabilität weiterhin gibt. Ein abschließender Fokus wird auf der Fehlerbehandlung liegen.

Oliver Müller
ist freiberuflicher IT-Berater und -Trainer mit den Schwerpunkten Software Engineering und Kryptographie. Er berät zu Java EE, Unix/Linux, Android und Mainframe-Systemen.

(rme)