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.