# nn_socket(3compat) Manual Page

## NAME

nn_socket - create socket (compatible API)

## SYNOPSIS

    #include <nanomsg/nn.h>

    int nn_socket(int af, int proto);

## DESCRIPTION

The `nn_socket()` function creates socket using the address family af and protocol proto and returns it.

| This function is provided for API compatibility with legacy libnanomsg. Consider using the relevant modern API instead.

| Mixing the compatibility API and the modern API is not supported on a given socket.

| Some protocols, transports, and features are only available in the modern API.

The address family af can be one of two values:

`AF_SP` | Normal socket.
`AF_SP_RAW` | Raw mode socket.

The protocol indicates the protocol to be used when creating the socket. The following protocols are defined:

`NN_PAIR` | Pair protocol.
`NN_PUB` | Publisher protocol.
`NN_SUB` | Subscriber protocol.
`NN_REQ` | Requestor protocol.
`NN_REP` | Replier protocol.
`NN_PUSH` | Push protocol.
`NN_PULL` | Pull protocol.
`NN_SURVEYOR` | Surveyor protocol.
`NN_RESPONDENT` | Respondent protocol.
`NN_BUS` | Bus protocol.

## RETURN VALUES

This function returns a valid socket number on success, and -1 on failure.

## ERRORS

`ENOMEM` | Insufficient memory is available.
`ENOTSUP` | The protocol is not supported.
`ETERM` | The library is shutting down.

## SEE ALSO

nng_socket(5), nn_close(3compat), nn_errno(3compat), nng_compat(3compat), nng(7)