IPv4套接字地址结构
struct in_addr{
in_addr_t s_addr
};
struct sockaddr_in{
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
其中,sin_len是为了支持OSI协议而添加的。
其他几个变量含义如下:
sockaddr_in变量含义 | |
---|---|
sin_len | 长度字段(不一定支持) |
sin_family | 协议名,通常是AF_INET,类型为sa_family_t,若支持sin_len则为1byte,否则通常为2byte |
sin_port | 16位TCP或UDP端口号(网络字节序) |
sin_addr | 32位IPv4地址(网络字节序) |
sin_zero | 未用空字段(用于统一) |
通用套接字地址结构
struct sockaddr{
uint8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
}
不同协议使用套接字时均需要强制类型转换为sockaddr。
*IPv6套接字用的还比较少,用到了再补充