在Linux中,sockaddr
结构体用于表示套接字地址
例如,对于IPv4地址,sockaddr_in
结构体通常如下所示:
struct sockaddr_in {
sa_family_t sin_family; // AF_INET
in_port_t sin_port; // 端口号
struct in_addr sin_addr; // IP地址
};
对于IPv6地址,sockaddr_in6
结构体通常如下所示:
struct sockaddr_in6 {
sa_family_t sin6_family; // AF_INET6
in_port_t sin6_port; // 端口号
uint32_t sin6_flowinfo; // 流信息
struct in6_addr sin6_addr; // IP地址
};
在这些结构体中,有一些字段具有默认值。例如,sin_family
字段的默认值为AF_INET
(IPv4)或AF_INET6
(IPv6)。然而,这些默认值通常在创建套接字时由程序员显式设置。在实际使用中,sockaddr
结构体通常会根据需要分配和初始化。