| 
 | 
The two most common addressing schemes are
AF_UNIX and AF_INET
(Address Family UNIX and
Address Family Internet).
The sockaddr structure contains structure members that
specify the protocol (address) family and the actual address.
struct sockaddr {
	u_short sa_family;      /*address family*/
	char sa_data[14];     /*up to 14 bytes of address*/
};
AF_UNIX addressing uses UNIX
system pathnames to identify sockets. 
Such sockets are very useful
for interprocess communication (IPC)
between processes on the same machine.
AF_INET addresses consist of four-byte numbers.
When these addresses are to be read by people, they are
usually written as four decimal numbers separated by
periods (for example: 192.9.200.10).
There is also a port number to
allow more than one socket on each machine.
The sockaddr_in structure is:
struct sockaddr_in  {
	short sin_family;			/* address family*/
	u_short sin_port;			/* 2 bytes port number  */
	struct in_addr sin_addr;	/* 4 bytes IP address  */
	char sin_data[8];			/* unused */
};
The
gethostbyname(SLIB)
call is used to find the Internet address of a host.  The call takes
the form:
hostent = gethostbyname(name)where name is the name of a machine. The call returns a pointer to an object with the following structure containing the address of the machine.
struct	hostent	{
	char	*h_name;	/* official name of host */
	char	**h_aliases;	/* alias list */
	int	h_addrtype;	/* host address type */
	int	h_length;	/* length in bytes of address */
	char	**h_addr_list;	/* address list from name server */
};
The structure member h_name contains the official,
qualified name of the host.  h_alias contains a
null-terminated list of alternate names for the host.
The protocol family of the address is specified in
h_addrtype,
and h_length contains the address length.
h_addr_list is a null-terminated array of addresses for the host.
Conversely, the
gethostbyaddr(SLIB)
call is used to get the name of a machine.