Binding Local Names
A socket is created without a name. A remote process cannot refer to a socket
until an address is bound to the socket. Processes that communicate are connected
through addresses. In the Internet family, a connection is composed of local and
remote addresses and local and remote ports. Duplicate ordered sets, such as:
protocol, local address, local
port, foreign address, foreign
port cannot exist. In most families, connections must be unique.
The bind()
interface enables a process to specify the
local address of the socket. This interface forms the local
address, local port set. connect()
and accept()
complete a socket's association by fixing the remote
half of the address tuple. For more information, see the
bind(3C),
connect(3C), and
accept(3C) man pages.
The bind()
call is used as follows:
bind (s, name, namelen);
The socket handle is s. The bound name is a byte string that is interpreted by the supporting protocols. Internet family names contain an Internet address and port number.
This example demonstrates binding an Internet address.
#include <sys/types.h> #include <netinet/in.h> ... struct sockaddr_in6 sin6; ... s = socket(AF_INET6, SOCK_STREAM, 0); bzero (&sin6, sizeof (sin6)); sin6.sin6_family = AF_INET6; sin6.sin6_addr.s6_addr = in6addr_arg; sin6.sin6_port = htons(MYPORT); bind(s, (struct sockaddr *) &sin6, sizeof sin6);
The content of the address sin6 is described in Address Binding, where Internet address
bindings are discussed.