是否有一个函数可以检查名为 sptr
的 sockaddr *
是否指向 ipv4 或 ipv6 地址?
例如我有下面的代码,我如何添加它来获取地址是 ipv4 还是 ipv6,我可以使用 getaddrinfo()
吗?
struct sockaddr *sptr;
struct sockaddr_in *ipv4_ptr;
最佳答案
你可以测试sa_family
成员:
switch (sptr->sa_family)
{
case AF_INET:
/* IPv4 */
break;
case AF_INET6:
/* IPv6 */
break;
default:
/* Something else */
}
如果sa_family
成员是AF_INET
,表示一个IPv4地址,套接字地址实际上是一个struct sockaddr_in *
。如果 sa_family
成员是 AF_INET6
,则表示一个 IPv6 地址,套接字地址实际上是一个 struct sockaddr_in6
。
关于c - 是否有检查名为 sptr 的 sockaddr* 是否指向 ipv4 或 ipv6 地址的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527576/