Examining the Generic Socket Address
Because
the BSD socket interface was developed before the ANSI C standard was
adopted, there was no (void *) data pointer type to accept any structure
address. Consequently, the BSD solution chosen was to define a generic
address structure. The generic structure is defined by the C language
statement
Example
Listing 2.1: The Generic Socket Address
#include <sys/socket.h>
struct sockaddr {
sa_family_t sa_family; /* Address Family */
char sa_data [14]; /* Address data. */
};
Presently
the data type sa_family_t is an unsigned short integer, which is two
bytes in length under Linux. The total structure size is 16 bytes. The
structure element sa_data[14] represents 14 remaining bytes of address
information.
Figure 2.1 provides a physical view of the generic socket address structure.
Figure 2.1:
Here is a representation of the generic socket address layout.
The
generic socket address structure itself is not that useful to the
programmer. It does, however, provide a reference model from which all
other address structures must fit. For example, you will learn
that all addresses must define the sa_family member in exactly the same
location in the structure, because this element determines how the
remaining bytes of the address are interpreted.
See Also:
No comments:
Post a Comment