If ASIO had better documentation I could probably have found for myself an answer, but instead...
Is there a way to determine bytes available to read using the asio::ip::tcp::iostream ?
I really like the tcp iostream because it's super-easy to use, but I haven't found it exactly feature-packed. Does it have a tcp socket in there somewhere?
void foo( boost::asio::ip::tcp::iostream& stm )
std::size_t bytes_available = stm.rdbuf()->available() ;
// the native socket descriptor can be retrieved for platform specific
// socket functionality not available through asio. for example:
auto fd = stm.rdbuf()->native_handle() ; // version 1.48.
// IIRC, used to be stm.rdbuf()->native() earlier
::ifreq interface_request ;
::ioctl( fd, SIOCGIFNETMASK, &interface_request ) ;