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

# nng\_dialer\_start(3)

start dialer

## NAME

nng\_dialer\_start - start dialer

## SYNOPSIS

```
#include <nng/nng.h>
int nng_dialer_start(nng_dialer d, int flags);
```

## DESCRIPTION

The `nng_dialer_start()` function starts the dialer *d*.

This causes the dialer to start connecting to the address with which it was created.

When a connection is established, it results in a pipe being created, which will be attached to the dialer’s socket.

Normally, the first attempt to connect to the dialer’s address is done synchronously, including any necessary name resolution. As a result, a failure, such as if the connection is refused, will be returned immediately, and no further action will be taken.

However, if the special value `NNG_FLAG_NONBLOCK` is supplied in *flags*, then the connection attempt is made asynchronously.

Furthermore, if the connection was closed for a synchronously dialed connection, the dialer will still attempt to redial asynchronously.

**Tip**\

While `NNG_FLAG_NONBLOCK` can help an application be more resilient, it also generally makes diagnosing failures somewhat more difficult.

Once a dialer has started, it is generally not possible to change its configuration.

## RETURN VALUES

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

## ERRORS

`NNG_EADDRINVAL`

An invalid *url* was specified.

`NNG_ECLOSED`

The socket *s* is not open.

`NNG_ECONNREFUSED`

The remote peer refused the connection.

`NNG_ECONNRESET`

The remote peer reset the connection.

`NNG_EINVAL`

An invalid set of *flags* was specified.

`NNG_ENOMEM`

Insufficient memory is available.

`NNG_EPEERAUTH`

Authentication or authorization failure.

`NNG_EPROTO`

A protocol error occurred.

`NNG_ESTATE`

The dialer *d* is already started.

`NNG_EUNREACHABLE`

The remote address is not reachable.

## SEE ALSO

[nng\_dial(3)](/nng_dial/3.md), [nng\_dialer\_create(3)](/nng_dialer_create/3.md) [nng\_strerror(3)](/nng_strerror/3.md), [nng\_dialer(5)](/nng_dialer/5.md), [nng(7)](/nng/7.md)
