Your company here — click to reach over 10,000 unique daily visitors

nn_device - Man Page

start a device


#include <nanomsg/nn.h>

int nn_device (int s1, int s2);


Starts a device to forward messages between two sockets. If both sockets are valid, nn_device function loops and sends any messages received from s1 to s2 and vice versa. If only one socket is valid and the other is negative, nn_device works in a "loopback" mode — it loops and sends any messages received from the socket back to itself.

To break the loop and make nn_device function exit use the nn_term(3) function.

Return Value

The function loops until it hits an error. In such a case it returns -1 and sets errno to one of the values defined below.



One of the provided sockets is invalid.


Either one of the socket is not an AF_SP_RAW socket; or the two sockets don’t belong to the same protocol; or the directionality of the sockets doesn’t fit (e.g. attempt to join two SINK sockets to form a device).


The operation was interrupted by delivery of a signal.


The library is terminating.


int s1 = nn_socket (AF_SP_RAW, NN_REQ);
nn_bind (s1, "tcp://");
int s2 = nn_socket (AF_SP_RAW, NN_REP);
nn_bind (s2, "tcp://");
nn_device (s1, s2);

See Also

nn_socket(3) nn_term(3) nanomsg(7)


Martin Sustrik

Referenced By

nanomsg(7), nn_getsockopt(3), nn_setsockopt(3).

2024-01-25 nanomsg 1.1.5