Set of interface address structure

xiaoxiao2021-03-06  41

Set of interface address structure

IPv4 socket address structure

The IPv4 socket address structure is often also referred to as "Internet interface address structure", which is named "SockAddr_in", defined in the header file .

Struct in_addr {

IN_ADDR_T S_ADDR; / * 32BIT IPv4 Address * /

}; / * NetWork byte order * /

Struct sockaddr_in {

UINT8_T SIN_LEN; / * Length of structure (16) * /

SA_FAMILY_T SIN_FAMILY; / * AF_INET * /

IN_Port_t sin_port; / * 16-bit tcp or udp port number * /

/ * NetWork Byte Ordered * /

Struct in_addr sin_addr; / * 32bit ipv4 address * /

/ * NetWork Byte Ordered * /

Char sin_zero [8]; / * unused * /

}

General socket interface address structure

Definition in

Struct sockaddr {

UINT8_T SA_LEN;

SA_FAMILY_T SA_FAMILY; / * Address Family; AF_XXX VALUE * /

Char SA_Data [14]; / ​​* ptotocol-specific address * /

}

The socket function is defined as a pointer to the universal socket address structure, such as a Bind function prototype:

INT Bind (int, struct sockaddr *, socklen_t);

This requires any call to these functions to convert a pointer type to a protocol-specific set address structure into a pointer to a general purpose socket address structure. E.g:

Struct SockAddr Serv;

/ * Fill In Serv {} * /

Bind (Sockfd, (Struct SockAddr *) & Serv, SIZEOF (Serv));

IPv6 socket address structure

IPv6 socket address structure is defined in header file

Struct in6_addr {

UINT8_T S6_ADDR [16]; / * 128 bit ipv6 address * /

/ * NetWork Byte Ordered * /

}

#define SIN6_LEN / * Required for Compile-Time Test * /

Struct sockaddr_in6 {

UINT8_T SIN6_LEN; / * Length of this struct (24) * /

SA_FAMILY_T SIN6_FAMILY; / * AF_INET6 * /

IN_Port_t sin6_port; / * Transport Layer Port # * /

/ * NetWork Byte Ordered * /

UINT32_T SIN6_FlowInfo; / * Priorty & Flow Label * /

/ * NetWork Byte Ordered * /

Struct in6_addr sin6_addr; / * ipv6 address * // * network byte order * /

}

转载请注明原文地址:https://www.9cbs.com/read-76113.html

New Post(0)