The network communication program in Linux must deal with a structure, which is socket address. For example, functions such as bind and connect must use the socket address structure. We need to understand the socket address. In fact, in linux, a general address structure struct sockaddr is defined for different socket domains. Its specific definition is as follows:
{unsigned short int sa_family;char sa_data[14];}
|
Struct sockaddr
Sa_family is the domain parameter used to call the socket () function, and sa_data is stored with 14 characters in length. For sockets in different domains, the general address structure corresponds to different definitions. For example, in a general AF_INET domain, the socket address is defined as follows:
Struct sockaddr_in {unsigned short int sin_family; uint16_t sin_port; struct in_addr sin_addr; unsigned char sin_zero [8]; // unused} struct in_addr {uint32_t s_addr ;}
|
When the socket domain is different from AF_INET, the specific address definition is different, but the size and capacity of the entire address structure are consistent with the general address structure.