nanomsg next generation NNG  
Home GitHub Documentation

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


#include <nng/nng.h>

typedef union nng_sockaddr {
    uint16_t            s_family;
    nng_sockaddr_ipc    s_ipc;
    nng_sockaddr_inproc s_inproc;
    nng_sockaddr_in     s_in;
    nng_sockaddr_in6    s_in6;
    nng_sockaddr_zt     s_zt;
} nng_sockaddr;

enum sockaddr_family {
    NNG_AF_UNSPEC = 0,
    NNG_AF_INPROC = 1,
    NNG_AF_IPC    = 2,
    NNG_AF_INET   = 3,
    NNG_AF_INET6  = 4,
    NNG_AF_ZT     = 5,


An nng_sockaddr is a structure used for representing the addresses used by underlying transports, such as TCP/IP addresses, IPC paths, and so forth.

The name sockaddr is based on its similarity with POSIX struct sockaddr, but in the nng library, these addresses are more closely affiliated with instances of nng_pipe than of nng_socket. The naming confusion is unfortunate.

This structure is actually a union, with different members for different types of addresses.

Every member structure has as its first element a uint16_t field containing the “address family”. This overlaps the s_family member of the union, and indicates which specific member should be used.

The values of s_family are as follows:


Invalid address, no other valid fields.


Address for intraprocess communication (nng_inproc(7)). The s_inproc member is valid.


Address for interprocess communication (nng_ipc(7)). The s_path member is valid.


Address for TCP/IP (v4) communication. The s_in member is valid.


Address for TCP/IP (v6) communication. The s_in6 member is valid.


Address for ZeroTier transport (nng_zerotier(7)). The s_zt member is valid.

Please see the manual pages for each individual type for more information.

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.