Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > B


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


bind() — bind an address to a socket


#include <sys/socket.h>


#include <x25/x25addrstr.h>


#include <netinet/in.h>

AF_UNIX only

#include <sys/un.h>

int bind(int s, const void *addr, int addrlen);

UNIX 03 only (X/Open Sockets)

int bind(int s, const struct sockaddr *addr, socklen_t addrlen);

Obsolescent UNIX 95 only (X/Open Sockets)

int bind(int s, const struct sockaddr *addr, size_t addrlen);


The bind() system call assigns an address to an unbound socket. When a socket is created with socket(), it exists in an address space (address family) but has no address assigned. bind() 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, struct sockaddr_in for AF_INET and AF_VME_LINK, struct sockaddr_in6 for AF_INET6, and struct sockaddr_un for AF_UNIX). Typically, the sizeof() function is used to pass this value in the bind() call (for example, sizeof(struct sockaddr_in)).

The rules used in address binding vary between communication domains. For example, when binding an AF_UNIX socket to a path name (such as /tmp/mysocket), 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 bind() system call is used only by servers and not clients.

X/Open Sockets Compilation Environment

See xopen_networking(7).


bind() returns the following values:


Successful completion.


Failure. errno is set to indicate the error.


If bind() fails, errno 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 overlays 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 bind() 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 well-known port.


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 connection 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 broken, 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 bind() cannot complete.


No memory is available. The bind() cannot complete.


The x25ifname field name specifies a nonexistent interface. (This error can be returned by AF_CCITT only.)


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. (AF_VME_LINK.)


Currently, the socklen_t and size_t types are the same size. This is compatible with the UNIX 95 and UNIX 03 profiles. However, in a future release, socklen_t might be a different size, but that should not adversely affect application behavior in this case. Applications may use socklen_t 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 X/Open Sockets specification and binary objects compiled to HP-UX BSD Sockets specification to the same executable may result in unexpected behavior, including application abnormal termination and unexpected socket errors. See xopen_networking(7) for details and remedy.


Currently, the default behavior is the HP-UX BSD Sockets; however, it might be changed to X/Open Sockets in a future release. At that time, any HP-UX BSD Sockets behavior that is incompatible with X/Open Sockets might be obsoleted. Applications that conform to the X/Open specification now will avoid migration problems (see xopen_networking(7)).


bind() was developed by HP and the University of California, Berkeley.


bind(): XPG4, UNIX 95, UNIX 03

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.