---
name: "netread"
section: "3"
platform: "linux"
package: "liblcgdm-dev"
version: "1.10.0-2+b3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/netread/3"
---

# netread(3)

receive a message from a socket

## NAME

netread - receive a message from a socket

## SYNOPSIS

**#include "net.h"**

**int netread (int** *s***,** **char \****buf***,** **int** *nbytes***);**

**ssize\_t netread\_timeout (int** *s***,** **void \****buf***,** **size\_t** *nbytes***,** **int** *timeout***);**

## DESCRIPTION

**netread** receives a message from a socket. It overcomes the message fragmentation problem and always waits for all requested bytes to arrive or a timeout/error occurs.

## RETURN VALUE

This routine returns the number of bytes if the operation was successful, 0 if the connection was closed by the remote end or -1 if the operation failed. In the latter case, **serrno** is set appropriately.

## ERRORS

- **EINTR**

  The function was interrupted by a signal.

- **EBADF**

  *s* is not a valid descriptor.

- **EAGAIN**

  The socket is non-blocking and there is no message available.

- **EFAULT**

  *buf* is not a valid pointer.

- **EINVAL**

  *nbytes* is negative or zero.

- **ENOTSOCK**

  *s* is not a socket.

- **SECONNDROP**

  Connection closed by remote end.

- **SETIMEDOUT**

  Timed out.

## SEE ALSO

**[recv(2)](/recv/2.md)**, **neterror(3)**

## AUTHOR

**LCG Grid Deployment** Team
