SYNOPSIS
#include <nng/transport/ipc/ipc.h>
int nng_ipc_register(void);
DESCRIPTION
The nng_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.
Registration
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 an absolute 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
occupy the normal file system. On POSIX platforms, the path is
taken literally, and is relative to the root directory.
|
Socket Address
When using an nng_sockaddr
structure, the actual structure is of type
nng_sockaddr_ipc
. This is a struct
type with the following definition:
#define NNG_AF_IPC 2 (1)
#define NNG_MAXADDRLEN 128
typedef struct {
// ... (2)
uint16_t sa_family; // must be NNG_AF_IPC
char sa_path[NNG_MAXADDRLEN]; // arbitrary "path"
// ...
} nng_sockaddr_ipc;
1 | The values of these macros may change, so applications should avoid depending upon their values and instead use them symbolically. |
2 | Other members may be present, but only those listed here are suitable for application use. |
The sa_family
member will have the value NNG_AF_IPC
.
The sa_path
member is an ASCIIZ string, and may contain any legal
path name (platform-dependent), terminated by a NUL
byte.
Transport Options
The ipc transport has no special options.[1]