# nng_dialer_start(3) Manual Page

## 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.

| 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_dialer_create(3) nng_strerror(3), nng_dialer(5), nng(7)