25 Stimmen

C++ Boost ASIO: Wie kann man mit einem Timeout lesen/schreiben?

Nach dem Lesen anderer Stack Overflow-Einträge und der boost::asio Dokumentation habe ich bestätigt, dass es keine synchronen ASIO-Lese-/Schreibaufrufe gibt, die auch einen einfach zu verwendenden Timeout als Parameter für den Aufruf bereitstellen.

Ich bin gerade dabei, eine Linux-Socket-Anwendung der alten Schule mit select(2)-Aufrufen zu konvertieren, die Timeouts verwendet, und ich muss mehr oder weniger das Gleiche tun.

Wie kann man dies am besten in boost::asio ? Wenn ich mir die asio-Dokumentation ansehe, gibt es viele verwirrende Beispiele für verschiedene Dinge, die mit Timern zu tun haben, aber ich bin ziemlich verwirrt.

Ich würde gerne ein einfach zu lesendes Beispiel dafür sehen: Von einem Socket lesen, aber maximal X Sekunden warten. Danach kehrt die Funktion entweder mit nichts zurück oder mit dem, was sie vor Ablauf der Zeitspanne vom Socket lesen konnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X