Developing applications over TCP/IP using Internet sockets

Address Structures and Routines (Internet domain)

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:
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.
Next topic: Elementary system calls
Previous topic: Creating a socket (Internet domain)

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003