Go to the previous, next section.

Address Formats

The functions bind and getsockname use the generic data type struct sockaddr * to represent a pointer to a socket address. You can't use this data type effectively to interpret an address or construct one; for that, you must use the proper data type for the socket's namespace.

Thus, the usual practice is to construct an address in the proper namespace-specific type, then cast a pointer to struct sockaddr * when you call bind or getsockname.

The one piece of information that you can get from the struct sockaddr data type is the address format designator which tells you which data type to use to understand the address fully.

The symbols in this section are defined in the header file `sys/socket.h'.

Date Type: struct sockaddr

The struct sockaddr type itself has the following members:

short int sa_family
This is the code for the address format of this address. It identifies the format of the data which follows.

char sa_data[14]
This is the actual socket address data, which is format-dependent. Its length also depends on the format, and may well be more than 14. The length 14 of sa_data is essentially arbitrary.

Each address format has a symbolic name which starts with `AF_'. Each of them corresponds to a `PF_' symbol which designates the corresponding namespace. Here is a list of address format names:

This designates the address format that goes with the file namespace. (PF_FILE is the name of that namespace.) See section Details of File Namespace, for information about this address format.

This is a synonym for AF_FILE, for compatibility. (PF_UNIX is likewise a synonym for PF_FILE.)

This designates the address format that goes with the Internet namespace. (PF_INET is the name of that namespace.) See section Internet Socket Address Format.

This designates no particular address format. It is used only in rare cases, such as to clear out the default destination address of a "connected" datagram socket. See section Sending Datagrams.

The corresponding namespace designator symbol PF_UNSPEC exists for completeness, but there is no reason to use it in a program.

`sys/socket.h' defines symbols starting with `AF_' for many different kinds of networks, all or most of which are not actually implemented. We will document those that really work, as we receive information about how to use them.

Go to the previous, next section.