nanomsg next generation NNG  
Home GitHub Documentation

NOTE: This documentation is for version 1.0.0 of nng, but the latest released version is 1.1.0. Please see the documentation for 1.1.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 v1.0.0 © 2018 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.