nanomsg next generation NNG  
Home GitHub Documentation

This documentation is for version v1.1.0 of nng, but the latest released version is v1.8.0. see the documentation for v1.8.0 for the most up-to-date information.


#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 ensures 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:

NNG Reference Manual vv1.1.0 © 2019 Staysail Systems, Inc, © 2018 Capitar IT Group BV
This document is supplied under the MIT License.
nanomsg™ and nng™ are trademarks of Garrett D'Amore.