“’sockaddr_in’未声明(在此函数中首次使用)”错误,尽管包含必需的标题

#include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include #include  #include  #define BACKLOG 10 void * get_in_addr(struct sockaddr *sa){ if(sa->sa_family == AF_INET){ return &((sockaddr_in *)sa)->sin_addr; } else if(sa->sa_family == AF_INET6){ return &((sockaddr_in6 *)sa)->sin6_addr; } } 

我在我的代码中使用sockaddr_in结构来判断传入连接是IPv4还是IPV6地址。 尽管在我的代码中包含netinet / in.h头文件,但我收到错误“’sockaddr_in’未声明(在此函数中首次使用)”。 有没有我在这里看不到的东西?

sockaddr_in不是typedef ,因此请尝试使用struct如下所示

 (struct sockaddr_in *)