|
X/Open Networking Services Library Functions | bind(3XNET) |
| bind - bind a name to a socket |
SYNOPSIS
|
cc [ flag ... ] file ... -lxnet [ library ... ]
#include <sys/socket.h>
int bind(int socket, const struct sockaddr *address, socklen_t address_len); |
|
The bind() function assigns an address to an unnamed socket. Sockets created with socket(3XNET) function are initially unnamed; they are identified only by their address family.
The function takes the following arguments:
-
socket
- Specifies the file descriptor of the socket to be bound.
-
address
- Points to a sockaddr structure containing the address to be bound to the socket. The length and format of
the address depend on the address family of the socket.
-
address_len
- Specifies the length of the sockaddr structure pointed to by the address argument.
The socket in use may require the process to have appropriate privileges to use the bind() function.
|
|
An application program can retrieve the assigned socket name with the getsockname(3XNET)
function.
|
|
Upon successful completion, bind() returns 0. Otherwise, -1 is returned and errno is set to indicate the error.
|
|
The bind() function will fail if:
-
EADDRINUSE
- The specified address is already in use.
-
EADDRNOTAVAIL
- The specified address is not available from the local machine.
-
EAFNOSUPPORT
- The specified address is not a valid address for the address family of the specified socket.
-
EBADF
- The socket argument is not a valid file descriptor.
-
EFAULT
- The address argument can not be accessed.
-
EINVAL
- The socket is already bound to an address, and the protocol does not support binding to a new address; or the socket has been shut
down.
-
ENOTSOCK
- The socket argument does not refer to a socket.
-
EOPNOTSUPP
- The socket type of the specified socket does not support binding to an address.
If the address family of the socket is AF_UNIX, then bind() will fail if:
-
EACCES
- A component of the path prefix denies search permission, or the requested name requires
writing in a directory with a mode that denies write permission.
-
EDESTADDRREQ
-
EISDIR
- The address argument is a null pointer.
-
EIO
- An I/O error occurred.
-
ELOOP
- Too many symbolic links were encountered in translating the pathname in address.
-
ENAMETOOLONG
- A component of a pathname exceeded NAME_MAX characters, or an entire pathname exceeded PATH_MAX characters.
-
ENOENT
- A component of the pathname does not name an existing file or the pathname is an empty string.
-
ENOTDIR
- A component of the path prefix of the pathname in address is not a directory.
-
EROFS
- The name would reside on a read-only filesystem.
The bind() function may fail if:
-
EACCES
- The specified address is protected and the current user does not have permission to bind
to it.
-
EINVAL
- The address_len argument is not a valid length for the address family.
-
EISCONN
- The socket is already connected.
-
ENAMETOOLONG
- Pathname resolution of a symbolic link produced an intermediate result whose length exceeds PATH_MAX.
-
ENOBUFS
- Insufficient resources were available to complete the call.
-
ENOSR
- There were insufficient STREAMS resources for the operation to complete.
|
|
See attributes(5) for descriptions of the following
attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
MT-Level | MT-Safe |
|
| |