This documentation is for the TIP (development tree) of NNG and may represent unreleased changes or functionality that is experimental, and is subject to change before release. The latest released version is v1.3.2. See the documentation for v1.3.2 for the most up-to-date information.



nng_socket - socket handle


#include <nng/nng.h>

typedef struct nng_socket_s nng_socket;


An nng_socket is a handle to an underlying socket object. All communication between the application and remote Scalability Protocol peers is done through sockets. A given socket can have multiple dialers (nng_dialer) and/or listeners (nng_listener), and multiple pipes (nng_pipe), and may be connected to multiple transports at the same time. However, a given socket will have exactly one protocol associated with it, and is responsible for any state machines or other protocol-specific logic.

The nng_socket structure is always passed by value (both for input parameters and return values), and should be treated opaquely. Passing structures this way gives the compiler a chance to perform accurate type checks in functions passing values of this type.

Each nng_socket is created by a protocol-specific constructor, such as nng_rep_open(). When the socket is no longer needed, it can be closed with nng_close().


A socket may be initialized using the macro NNG_SOCKET_INITIALIZER before it is opened, to prevent confusion with valid open sockets.

For example: