circu.js
    Preparing search index...

    Thin wrapper around a POSIX/Winsock socket file descriptor. All operations are synchronous and non-blocking behaviour must be arranged by the caller (e.g. via PosixSocket.poll).

    const { PosixSocket, create_sockaddr_inet, defines } = import.meta.use('socket');
    const { AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR } = defines;

    const srv = new PosixSocket(AF_INET, SOCK_STREAM, 0);
    const opt = new Uint8Array(4); new DataView(opt.buffer).setUint32(0, 1, true);
    srv.setopt(SOL_SOCKET, SO_REUSEADDR, opt);
    srv.bind(create_sockaddr_inet({ host: '0.0.0.0', port: 8080 }));
    srv.listen(128);
    // ... poll for READABLE, then srv.accept()
    const { PosixSocket, create_sockaddr_inet, defines } = import.meta.use('socket');
    const { AF_INET, SOCK_DGRAM, SOL_SOCKET, SO_BROADCAST } = defines;

    const sock = new PosixSocket(AF_INET, SOCK_DGRAM, 0);
    const opt = new Uint8Array(4); new DataView(opt.buffer).setUint32(0, 1, true);
    sock.setopt(SOL_SOCKET, SO_BROADCAST, opt);
    sock.connect(create_sockaddr_inet({ host: '255.255.255.255', port: 9 }));
    sock.send(magicPacket);
    sock.close();
    Index

    Constructors

    • Create a new socket.

      Parameters

      • domain: number

        Address family, e.g. defines.AF_INET

      • type: number

        Socket type, e.g. defines.SOCK_STREAM

      • protocol: number

        Protocol, usually 0 for auto-select

      Returns PosixSocket

    Properties

    fileno: number

    The underlying file descriptor number.

    Type/domain/protocol info queried from the OS.

    polling: boolean

    true while a poll is active.

    Methods

    • Accept an incoming connection. The returned socket has a _sockaddr property with the peer address bytes.

      Returns PosixSocket

    • Bind to a local address (use create_sockaddr_inet to build the buffer).

      Parameters

      • addr: Uint8Array

      Returns void

    • Close the socket. Cannot be called from within a poll callback.

      Returns void

    • Connect to a remote address. On UDP sockets this only sets the default destination (no handshake), enabling send to work without an explicit address — a portable alternative to sendto.

      Parameters

      • addr: Uint8Array

      Returns void

    • Get a socket option as raw bytes.

      Parameters

      • level: number
      • optname: number
      • Optionaloptlen: number

        Expected buffer size (defaults to sizeof(sockaddr_storage))

      Returns Uint8Array

    • Mark socket as passive (server).

      Parameters

      • backlog: number

      Returns void

    • Start polling for I/O readiness via libuv. The callback receives (status: number, events: number) where events is a bitmask of UvPollEventBits.

      Parameters

      • events: number
      • callback: (status: number, events: number) => void

      Returns void

      const { uv_poll_event_bits } = import.meta.use('socket');
      srv.poll(uv_poll_event_bits.READABLE, (status, events) => {
      if (status < 0) { console.error(uv_strerror(status)); return; }
      const client = srv.accept();
      });
    • Stop polling. Cannot be called from within the poll callback.

      Returns void

    • Receive up to count bytes. Returns null on EOF / graceful peer close.

      Parameters

      • count: number
      • Optionalflags: number

        Optional recv flags (e.g. MSG_PEEK)

      Returns Uint8Array<ArrayBufferLike> | null

    • Receive a datagram with ancillary data. POSIX only.

      Parameters

      • bufsize: number

        Maximum payload size

      • Optionalcontrolsize: number

        Maximum ancillary data size (omit if not needed)

      Returns RecvMsgResult

    • Send bytes. Returns the number of bytes actually sent.

      Parameters

      • data: Uint8Array
      • Optionalflags: number

        Optional send flags (e.g. MSG_DONTWAIT)

      Returns number

    • Send a message with optional address and ancillary data. POSIX only.

      Parameters

      • addr: Uint8Array<ArrayBufferLike> | undefined

        Destination address bytes, or undefined for connected sockets

      • control: Uint8Array<ArrayBufferLike> | undefined

        Ancillary (cmsg) data, or undefined

      • flags: number

        Send flags

      • ...data: Uint8Array<ArrayBufferLike>[]

        One or more data buffers (scatter-gather)

      Returns number

    • Set a socket option.

      Parameters

      • level: number
      • optname: number
      • optval: Uint8Array

      Returns void

      const opt = new Uint8Array(4);
      new DataView(opt.buffer).setUint32(0, 1, true);
      sock.setopt(SOL_SOCKET, SO_REUSEADDR, opt);
    • Shut down one or both directions.

      Parameters

      • how: 0 | 1 | 2

        0 = RD, 1 = WR, 2 = RDWR

      Returns void