On Sat, 20 Feb 2021 at 10:56, Child OfGod via Boost-users <boost-users@lists.boost.org> wrote:
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.

There are a number of options you can get to control the intervals and thresholds for TCP keepalives. Bear in mind that:
1) They will increase battery use on mobile devices and laptops because the radio will be transmitting more often.
2) They won't detect a server who's application has gone quiet while the TCP link stays up.

There is also SO_RCVTIMEO (on linux)

https://linux.die.net/man/3/setsockopt

 
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


--
Richard Hodges
office: +442032898513
home: +376841522
mobile: +376380212