typedef struct nng_socket_s nng_socket;
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 (
and/or listeners (
nng_listener), and multiple
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.
nng_socket structure is always passed by value (both
for input parameters and return values), and should be treated opaquely.
Passing structures this way gives the compiler a chance to perform
accurate type checks in functions passing values of this type.
A socket may be initialized using the macro
before it is opened, to prevent confusion with valid open sockets.
nng_socket s = NNG_SOCKET_INITIALIZER;