据我所知,一个 sockaddr 结构包括:
struct sockaddr
{
unsigned short sa_family;
char sa_data[14];
}; `
如果我已经有了结构数据:如何从那里获取 IP?
您需要将其struct sockaddr转换为取决于系列的特定子类:
AF_UNIX,struct sockaddr将struct sockaddr_unAF_INET,struct sockaddr将struct sockaddr_inAF_INET6,struct sockaddr将struct sockaddr_in6一旦将结构转换为后一种类型,就可以从该结构中获取地址。请注意,每个协议的地址格式不同,包含它们的字段的名称和类型也不同。例如,如果家族是AF_UNIX您可以从中获取路径名sun_path(在这种情况下没有 IP 地址之类的东西),而如果家族是您可以分别从和AF_INET6获取 IP 地址和端口号。sin6_addrsin6_port