This documentation is for version v1.3.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/transport/ipc/ipc.h>

int nng_ipc_register(void);


The ipc transport provides communication support between nng sockets within different processes on the same host. For POSIX platforms, this is implemented using UNIX domain sockets. For Windows, this is implemented using Windows Named Pipes. Other platforms may have different implementation strategies.


The ipc transport is generally built-in to the nng core, so no extra steps to use it should be necessary.

URI Format

This transport uses URIs using the scheme ipc://, followed by a path name in the file system where the socket or named pipe should be created.

On Windows, all names are prefixed by \.pipe and do not reside in the normal file system. On POSIX platforms, the path is taken literally, and is relative to the current directory, unless it begins with /, in which case it is relative to the root directory.
When using relative paths on POSIX systems, the address used and returned in properties like NNG_OPT_LOCADDR and NNG_OPT_URL will also be relative. Consequently, they will only be interpreted the same by processes that have the same working directory. To ensure maximum portability and safety, absolute paths are recommended whenever possible.
If compatibility with legacy nanomsg applications is required, then pathnames must not be longer than 122 bytes, including the final NUL byte. This is because legacy versions of nanomsg cannot express URLs longer than 128 bytes, including the ipc:// prefix.

Socket Address

When using an nng_sockaddr structure, the actual structure is of type nng_sockaddr_ipc.

Transport Options

The following transport options are supported by this transport, where supported by the underlying platform.