---
name: "nng_recvmsg"
section: "3"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_recvmsg"
---

# nng\_recvmsg(3)

receive a message

## NAME

nng\_recvmsg - receive a message

## SYNOPSIS

```
#include <nng/nng.h>
int nng_recvmsg(nng_socket s, nng_msg **msgp, int flags);
```

## DESCRIPTION

The `nng_recvmsg()` receives a message on socket *s*, storing the received message at the location pointed to by *msgp*.

**Tip**\

Using this function gives access to the message structure, and thus may offer more functionality than the simpler `nng_recv()` function.

The *flags* may contain the following value:

`NNG_FLAG_NONBLOCK`

The function returns immediately, even if no message is available. Without this flag, the function will wait until a message is received by the socket *s*, or any configured timer expires.

**Note**\

The semantics of what receiving a message means vary from protocol to protocol, so examination of the protocol documentation is encouraged. (For example, with an *req* socket a message may only be received after a request has been sent, and an *sub* socket may only receive messages corresponding to topics to which it has subscribed.) Furthermore, some protocols may not support receiving data at all, such as *pub*.

## RETURN VALUES

This function returns 0 on success, and non-zero otherwise.

## ERRORS

`NNG_EAGAIN`

The operation would block, but `NNG_FLAG_NONBLOCK` was specified.

`NNG_ECLOSED`

The socket *s* is not open.

`NNG_EINVAL`

An invalid set of *flags* was specified.

`NNG_ENOMEM`

Insufficient memory is available.

`NNG_ENOTSUP`

The protocol for socket *s* does not support receiving.

`NNG_ESTATE`

The socket *s* cannot receive data in this state.

`NNG_ETIMEDOUT`

The operation timed out.

## SEE ALSO

[nng\_msg\_free(3)](/nng_msg_free/3.md), [nng\_recv(3)](/nng_recv/3.md), [nng\_sendmsg(3)](/nng_sendmsg/3.md), [nng\_strerror(3)](/nng_strerror/3.md), [nng\_socket(5)](/nng_socket/5.md), [nng(7)](/nng/7.md)
