---
title: "sock_send_file()"
description: "Sends the entire contents of a file down a socket."
url: "https://wasix.org/docs/api-reference/wasix/sock_send_file/"
markdown: "https://wasix.org/docs/api-reference/wasix/sock_send_file.md"
---

# `sock_send_file()`

Sends the entire contents of a file down a socket.

## Description

The `sock_send_file()` function is used to send the entire contents of a file down a socket. It reads the data from the file and transmits it over the socket. The function returns the number of bytes transmitted.

## Syntax

```ebnf
  ;;; Sends the entire contents of a file down a socket
  (@interface func (export "sock_send_file")
    (param $out_fd $fd)
    ;;; Open file that has the data to be transmitted
    (param $in_fd $fd)
    ;;; Offset into the file to start reading at
    (param $offset $filesize)
    ;;; Number of bytes to be sent
    (param $count $filesize)
    ;;; Number of bytes transmitted.
    (result $error (expected $filesize (error $errno)))
  )
```

## Parameters

- `ctx`: A mutable reference to the function environment.
- `sock`: The file descriptor of the socket to send on.
- `in_fd`: The file descriptor of the open file that has the data to be transmitted.
- `offset`: The offset into the file to start reading at.
- `count`: The number of bytes to be sent.
- `ret_sent`: A pointer to store the number of bytes transmitted.

## Return Value

The function returns a `Result` containing an `Errno` value. If the operation is successful, `Errno::Success` is returned. Otherwise, an appropriate `Errno` value indicating the error is returned.

## Notes

- The `sock_send_file()` function sends the entire contents of a file down a socket.
- It starts reading from the specified offset within the file.
- The `count` parameter specifies the number of bytes to be sent. It is decremented as data is transmitted.
- The function enters a loop to process the data in chunks. Each chunk is read from the file and sent over the socket.
- The function supports reading data from different types of files, including regular files, standard input, and pipes.
- The specific behavior of the `sock_send_file()` 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_send_file/)
