Thanks Niall, I tried adding this to the code: [code] boost::asio::socket_base::keep_alive ka_option(true); socket.lowest_layer().set_option(ka_option); [/code]
and now it sometimes can come out of the read with an exception raised, which is good, but this happens only once in a while. I haven't tried other ways yet such as what Richard Hodges suggested, as I need to delve deeper into that, and Boost or linux is new to me. On Sat, Feb 20, 2021 at 12:58 AM Niall Douglas via Boost-users < boost-users@lists.boost.org> wrote: > On 19/02/2021 17:19, Richard Hodges via Boost-users wrote: > > The TCP/IP protocol was designed to work over unreliable networks, > > including sections that hop over radio links and dial-up telephone lines. > > > > In a nutshell, the way the internet works is that packets are > > transmitted and it is assumed that they may or may not arrive at some > > time in the future. There are timeouts built in, but they are longer > > than you would probably want, on account of all the unreliable dial-ups > > between you and the other peer. > > > > Therefore, to involve a timeout you need to run a timer in parallel with > > the send/receive operation and cancel the operation if the timeout > > occurs before the operation has completed. > > It probably would be easier to set SO_KEEPALIVE on the socket, then it > will close as soon as the physical connection disappears. This works for > any kind of socket, no timeouts needed. > > Niall > _______________________________________________ > Boost-users mailing list > Boost-users@lists.boost.org > https://lists.boost.org/mailman/listinfo.cgi/boost-users >
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users