0

据我所知,一个 sockaddr 结构包括:

struct sockaddr 
{   
    unsigned short sa_family;  
    char sa_data[14];          
}; `

如果我已经有了结构数据:如何从那里获取 IP?

4

1 回答 1

1

您需要将其struct sockaddr转换为取决于系列的特定子类:

  • 如果家庭是AF_UNIXstruct sockaddrstruct sockaddr_un
  • 如果家庭是AF_INETstruct sockaddrstruct sockaddr_in
  • 如果家庭是AF_INET6struct sockaddrstruct sockaddr_in6
  • ETC...

一旦将结构转换为后一种类型,就可以从该结构中获取地址。请注意,每个协议的地址格式不同,包含它们的字段的名称和类型也不同。例如,如果家族是AF_UNIX您可以从中获取路径名sun_path(在这种情况下没有 IP 地址之类的东西),而如果家族是您可以分别从和AF_INET6获取 IP 地址和端口号。sin6_addrsin6_port

于 2013-06-12T19:09:31.357 回答