bind()

Updated: April 19, 2023

Bind a name to a socket

Synopsis:

#include <sys/types.h>
#include <sys/socket.h>

int bind( int s,
          const struct sockaddr * name,
          socklen_t namelen );

Arguments:

s
The file descriptor to be bound.
name
A pointer to the sockaddr structure that holds the address to be bound to the socket. The socket length and format depend upon its address family.
namelen
The length of the sockaddr structure pointed to by name.

Library:

libsocket

Use the -l socket option to qcc to link against this library.

Description:

When a socket is created with socket(), it exists in a namespace (address family) but has no name assigned to it. The bind() function assigns a name to that unnamed socket.

Note: The bind() function assigns a local address. Use connect() to assign a remote address.

The rules used for binding names vary between communication domains.

Note: Before calling bind() on an AF_INET socket, set the af_family member of the sockaddr structure to AF_INET. Up until QNX Neutrino 6.4.0, a value of 0 was accepted and assumed to be this value.

Returns:

0
Success.
-1
An error occurred (errno is set).

Errors:

EACCES
The requested address is protected, and the current user has inadequate permission to access it.
EADDRINUSE
The specified address is already in use.
EADDRNOTAVAIL
The specified address isn't available from the local machine.
EBADF
Invalid descriptor s.
EFAULT
The name parameter isn't in a valid part of the user address space.
EINVAL
The socket is already bound to an address.
ENOTSOCK
The given file descriptor isn't for a socket.

Classification:

POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes