bind(2)bind(2)NAMEbind() - bind an address to a socket
AF_INET, AF_INET6 and AF_VME_LINK only
UNIX 03 only (X/Open Sockets)
Obsolescent UNIX 95 only (X/Open Sockets)
The system call assigns an address to an unbound socket. When a socket
is created with it exists in an address space (address family) but has
no address assigned. causes the socket whose descriptor is s to become
bound to the address specified in the socket address structure pointed
to by addr.
addrlen must specify the size of the address structure. Since the size
of the socket address structure varies between socket address families,
the correct socket address structure should be used with each address
family (for example, for AF_INET and AF_VME_LINK, for AF_INET6, and for
AF_UNIX). Typically, the function is used to pass this value in the
call (for example,
The rules used in address binding vary between communication domains.
For example, when binding an AF_UNIX socket to a path name (such as an
open file having that name is created in the file system. When the
bound socket is closed, that file still exists unless it is removed or
unlinked. When binding an AF_INET socket or an AF_INET6 socket,
sin_port can be a port number or it can be zero. If sin_port is zero,
the system assigns an unused port number automatically.
The system call is used only by servers and not clients.
X/Open Sockets Compilation Environment
returns the following values:
is set to indicate the error.
If fails, is set to one of the following values.
The requested address is protected, and the current user
has inadequate permission to access it. (This
error can be returned by AF_INET or AF_INET6 only.)
The specified address is already in use.
The specified address is invalid or not available from the local
machine, or for AF_CCITT sockets which use "wild
card" addressing, the specified address space over‐
lays the address space of an existing bind.
The specified address is not a valid address
for the address family of this socket.
s is not a valid file descriptor.
No addr parameter was specified.
addr is not a valid pointer.
The socket is already bound to an address,
the socket has been shut down, addrlen is a bad
value, or an attempt was made to an AF_UNIX socket
to an NFS-mounted (remote) name.
AF_CCITT: The protocol-ID length is negative or
greater than 8, the X.121 address string contains
an illegal character, or the X.121 address string
is greater than 15 digits long.
AF_VME_LINK: An explicit bind can be made only to a
The x25ifname field name specifies an interface that
was shut down, or never initialized, or whose Level
2 protocol indicates that the link is not working:
Wires might be broken, the interface hoods on the
modem are broken, the modem failed, the phone con‐
nection failed (this error can be returned by
AF_CCITT only), noise interfered with the line for
a long period of time.
The X.25 Level 2 protocol is down.
The X.25 link is not working: Wires might be bro‐
ken, or connections are loose on the interface
hoods at the modem, the modem failed, or noise
interfered with the line for an extremely long
period of time.
No buffer space is available.
The cannot complete.
No memory is available.
The cannot complete.
The x25ifname field name specifies a nonexistent inter‐
face. (This error can be returned by AF_CCITT
s is a valid file descriptor, but it is not a socket.
The socket referenced by
s does not support address binding.
The connection is already bound.
Currently, the and types are the same size. This is compatible with
the UNIX 95 and UNIX 03 profiles. However, in a future release, might
be a different size, but that should not adversely affect application
behavior in this case. Applications may use now. But applications
that need to be portable to the UNIX 95 profile should follow the
X/Open specification (see xopen_networking(7)).
Linking binary objects compiled to specification and binary objects
compiled to specification to the same executable may result in unex‐
pected behavior, including application abnormal termination and unex‐
pected socket errors. See xopen_networking(7) for details and remedy.
Currently, the default behavior is the however, it might be changed to
in a future release. At that time, any behavior that is incompatible
with might be obsoleted. Applications that conform to the X/Open spec‐
ification now will avoid migration problems (see xopen_networking(7)).
was developed by HP and the University of California, Berkeley.
SEE ALSOconnect(2), getsockname(2), listen(2), socket(2), privileges(5),
thread_safety(5), inet(7F), IPv6(7P), sctp(7), TCP(7P), UDP(7P),