SYNOPSIS
+#include <nng/nng.h>
+
+int nng_dial(nng_socket s, const char *url, nng_dialer *dp, int flags);
+DESCRIPTION
+The nng_dialer() function creates a newly initialized
+dialer, associated with socket s, and configured to listen at the
+address specified by url. If the value of dp is not NULL, then
+the newly created dialer is stored at the address indicated by dp.
Dialers initiate a remote connection to a listener. Upon a successful +connection being established, they create a pipe, add it to the socket, +and then wait for that pipe to be closed. When the pipe is closed, +they will re-initiate the connection. Dialer’s will also periodically +retry a connection automatically if an attempt to connect asynchronously +fails.
+| + + | ++While it is convenient to think of dialers as "clients", the relationship +between the listener or dialer is orthogonal to any server or client status +that might be associated with a given protocol. For example, a REQ +socket might have associated dialers, but might also have associated listeners. +It may even have some of each at the same time! + | +
Normally, the first attempt to connect to the address indicated by url 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.
+ |
+
Because the dialer is started immediately, it is generally not possible +to apply extra configuration; if that is needed applications should consider +using nng_dialer_create(3) and +nng_dialer_start(3) instead.
+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_EUNREACHABLE
+-
+
The remote address is not reachable.
+
+
SEE ALSO
+ +COPYRIGHT
+Copyright 2018 Staysail Systems, Inc.
+Copyright 2018 Capitar IT Group BV
+
+This document is supplied under the terms of the MIT License.