Boost logo

Boost Users :

From: Richard Hodges (hodges.r_at_[hidden])
Date: 2021-02-20 10:13:28


On Sat, 20 Feb 2021 at 10:56, Child OfGod via Boost-users <
boost-users_at_[hidden]> 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_at_[hidden]> 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_at_[hidden]
>> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>

-- 
Richard Hodges
hodges.r_at_[hidden]
office: +442032898513
home: +376841522
mobile: +376380212


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net