
However, I notice that even though Asio works wonderfully for larger, asynchronous projects, it gets in the way while doing smaller, more routine tasks.
Take a look at these examples: http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/example/iostreams/d... http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/example/iostreams/d...
And, asio also is not a miniscule library and when creating binaries, one is often including things he/she wouldn't need.
What exactly? IMHO, asio is pretty modular, so you include and compile just what you want. Eg, if you don't include the ssl part or timers - you don't have them in your binary.
So, I wrote a small library (<500 LOC) that basically lets you pretend that a socket is a stream and you can use it like std::cout and std::cin.
Could you please elaborate a bit on how it's different from the ASIO tcp::iostream?