ipv4套接字地址结构
定义在<netline/in.h>头文件之中
struct in_addr{
in_addr_t s_addr;//in_addr_t IPV4地址,一般为uint32_t(无符号的32位整数)
}
struct sockaddr_in{
uint8_t sin_len;//结构体的长度
sa_family_t sin_family;//协议族
in_port_t sin_port;//端口号 in_port_t TCP或UDP端口,一般为uint16_t(无符号的16位整数)
struct in_addr sin_addr;//32位IPv4地址
char sin_zero[8];//感觉没设么软用
}
通用套接字地址结构
定义在<sys/socket.h>
struct sockaddr{
uint8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
}
通用套接字地址结构唯一的用途就是对指向特定于协议的套接字地址结构的指针执行类型强制转换.
IPV6套接字地址结构
定义在<netinet/in.h>
struct in6_addr{
uint8_t s6_addr[16];//16个8字节的无符号int型构成128位IPv6
}
struct sockaddr_in6{
uint8_t sin6_len;//结构体长度
sa_family_t sin6_family;//协议族
in_port_t sin6_port;
uint32_t sin6_flowinfo;//分成两个字段,低序20位是流标,高序12位保留
struct in6_addr sin6_addr;
uint32_t sin6_scope_id;//标识具备范围的地址,最常见的是链路局部地址的结构索引
}
网友评论