---
title: "sock_accept_v2()"
description: "The sock_accept_v2() function is used to accept a new incoming connection on a listening socket. It is similar to the accept function in POSIX."
url: "https://wasix.org/docs/api-reference/wasix/sock_accept_v2/"
markdown: "https://wasix.org/docs/api-reference/wasix/sock_accept_v2.md"
---

# `sock_accept_v2()`

Accept a new incoming connection.

## Description

The `sock_accept_v2()` function is used to accept a new incoming connection on a listening socket. It is similar to the `accept` function in POSIX.

When a connection is accepted, a new socket is created and returned. This new socket represents the communication channel with the client.

> WASI version of sock\_accept does not return an address which obviously is a bit of a problem for those that want to know who actually connected to them. i.e. the peer address and port

## Syntax

```ebnf
  ;;; Accept a new incoming connection.
  ;;; Note: This is similar to `accept` in POSIX.
  (@interface func (export "sock_accept_v2")
    ;;; The listening socket.
    (param $fd $fd)
    ;;; The desired values of the file descriptor flags.
    (param $flags $fdflags)
    ;;; New socket connection
    (result $error (expected (tuple $fd $addr_port) (error $errno)))
  )
```

## Parameters

- `ctx`: A mutable reference to the function environment.
- `sock`: The file descriptor of the listening socket on which to accept a connection.
- `fd_flags`: The desired values of the file descriptor flags for the new socket.
- `ro_fd`: A WebAssembly pointer where the file descriptor of the new socket will be written.
- `ro_addr`: A WebAssembly pointer where the address of the remote client will be written.

## Return Value

The function returns a `Result` containing the outcome of the operation. If the operation is successful, `Ok(Errno::Success)` is returned, and the file descriptor of the new socket is written to the memory location pointed to by `ro_fd`. The address of the remote client is written to the memory location pointed to by `ro_addr`.

## Notes

- The `sock_accept_v2()` function accepts a new incoming connection on a listening socket.
- The function blocks until a connection request is received.
- Upon successful acceptance of a connection, a new socket is created to handle communication with the client.
- The file descriptor flags specified by `fd_flags` control the behavior of the new socket.
- The address of the remote client, including the IP address and port number, is written to the memory location pointed to by `ro_addr`.
- The specific behavior of the `sock_accept_v2()` function may vary depending on the runtime environment and underlying networking implementation.

---

[Documentation index](https://wasix.org/llms.txt) · [HTML version](https://wasix.org/docs/api-reference/wasix/sock_accept_v2/)
