Turns TCP keep-alive probes on s on or off and returns whether it worked.
With keepalive false the probes are switched off and the timings are ignored. When it is true, each timing that is
above zero replaces the system default: seconds of idleness before the first probe, seconds between probes, and the
number of unanswered probes before the connection is dropped. Zero keeps the system's value. A failure is logged through
context.logger and returns false; options already set stay set.
Winsock counts the two timings in milliseconds; they are converted from seconds here. The probe count is applied only where the system has the option (Windows 10 and later) and is otherwise left at the system's own.
set_keepalive :: (
s: Socket,
keepalive: bool,
idle_seconds_before_keepalive: s32 = 0,
keepalive_interval_seconds: s32 = 0,
num_keepalive_attempts: s32 = 0
) -> bool
Turns TCP keep-alive probes on s on or off and returns whether it worked.
With keepalive false the probes are switched off and the timings are ignored. When it is true, each timing that is
above zero replaces the system default: seconds of idleness before the first probe, seconds between probes, and the
number of unanswered probes before the connection is dropped. Zero keeps the system's value. A failure is logged through
context.logger and returns false; options already set stay set.
Winsock counts the two timings in milliseconds; they are converted from seconds here. The probe count is applied only where the system has the option (Windows 10 and later) and is otherwise left at the system's own.
Parameters
- s: Socket
- keepalive: bool
- idle_seconds_before_keepalive: s32
- keepalive_interval_seconds: s32
- num_keepalive_attempts: s32
Returns
- bool
set_keepalive :: (
s: Socket,
keepalive: bool,
idle_seconds_before_keepalive: s32 = 0,
keepalive_interval_seconds: s32 = 0,
num_keepalive_attempts: s32 = 0
) -> bool
Turns TCP keep-alive probes on s on or off and returns whether it worked.
With keepalive false the probes are switched off and the timings are ignored. When it is true, each timing that is
above zero replaces the system default: seconds of idleness before the first probe, seconds between probes, and the
number of unanswered probes before the connection is dropped. Zero keeps the system's value. A failure is logged through
context.logger and returns false; options already set stay set.
Parameters
- s: Socket
- keepalive: bool
- idle_seconds_before_keepalive: s32
- keepalive_interval_seconds: s32
- num_keepalive_attempts: s32
Returns
- bool
assert(socket_init());
s := socket(AF_INET, .SOCK_STREAM, .TCP);
defer close_and_reset(*s);
assert(set_keepalive(s, true));
assert(set_keepalive(s, true, 30, 5, 4));
assert(set_keepalive(s, false));Doesn't run in the browser (skipped on wasm).