Ich untersuche C++-Bibliotheken für portablen, blockierenden E/A-Zugriff auf das Dateisystem und das Netzwerk. Es siehe きにめす boost::filesystem
, boost::iostreams
y boost::asio
werden zu dritt die Arbeit erledigen.
Um es klarzustellen, ich bin derzeit nicht an den asynchronen Aspekten von boost::asio
Ich möchte nur eine tragbare, blockierende Schnittstelle zum Netz.
Wenn ich mich umschaue, sehe ich boost::iostreams
hat einen Begriff von Geräten, von denen jedes eine zugehörige Moduskonzept . Der bidirektionale Modus scheint speziell auf den Streaming-Zugang zu einer Vollduplex-TCP-Verbindung zugeschnitten zu sein. Fantastisch.
boost::iostreams
scheint keine Unterstützung für das tatsächliche Öffnen von TCP-Verbindungen zu bieten (im Gegensatz zum lokalen Dateisystem.) Das ist in Ordnung, denn boost::asio
kann ich die Verbindung öffnen und sie als bidirektionale Verbindung modellieren. Device
und wickeln Sie es in ein boost::iostreams::stream
.
außer es wird nicht? Ich sehe boost::asio::ip::tcp::iostream
, die die boost::iostreams::stream
aber vermutlich nicht als Device
.
Ich verstehe die tcp::iostream
würde sich ähnlich verhalten, aber ich würde es trotzdem vorziehen, nur für eine Schnittstelle zu lernen und zu programmieren, nicht für zwei. Insbesondere der Umgang mit zwei Fehlerbehandlungssystemen und Ausnahmehierarchien ist nicht sehr schmackhaft.
Die Frage ist also: Bin ich blind? Vielleicht gibt es einen Adapter zwischen den beiden Bibliotheken, den ich beim Herumgoogeln übersehen habe. Oder vielleicht hat jemand bereits einen solchen Adapter als 3rd-Party-Komponente, die ich in fallen könnte freigegeben?