MyNixOS website logo
Description

TCP keep alive implementation.

This module allows you to set per-connection keep alive parameters on windows, linux and darwin enviroments. For more information on keep alive signals see https://en.wikipedia.org/wiki/Keepalive. See also https://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ for a linux specific implementation.

keep-alive

This module allows you to set per-connection keep alive parameters on windows and linux enviroments. For more information on keep alive signals see See also <https://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ for a linux specific implementation.

The module is meant to be used in conjuction with the "network" package. However, in order to ensure adaptability, all functions require a socket file descriptor instead of an implementation dependent socket type. For the network package, such a descriptor can be obtained with the withFdSocket function:

 -- sock is a Socket type
 withFdSocket sock $ \fd -> do
    before <- getKeepAliveOnOff fd
    print before -- False
    -- set keep alive on, idle 60 seconds, interval 2 seconds
    rlt <- setKeepAlive fd $ KeepAlive True 60 2
    case rlt of
        Left err -> print err
        Right () -> return ()
    after <- getKeepAliveOnOff fd
    print after -- True

Please note that only the envocing process can manipulate sockets based on their file descriptors.

Metadata

Version

0.2.1.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows