首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索网络掩码信息的IPHelper应用编程接口是什么?

检索网络掩码信息的IPHelper应用编程接口是什么?
EN

Stack Overflow用户
提问于 2013-01-02 17:09:39
回答 1查看 941关注 0票数 0

我的第一个赌注是GetIpAddrTable(),因为它有示例代码,但它只支持IPv4。然后我尝试了GetAdaptersInfo(),但是文档显示它已经被GetAdaptersAddresses()淘汰了。使用GetAdaptersAdresses()或任何其他IP Helper API获取网络掩码的代码示例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-03 17:29:40

对于IPv4,您可以使用AF_INET套接字和SIO_GET_INTERFACE_LIST标志调用WSAIoctl。这将返回一个包含一组IP、子网掩码和广播地址的INTERFACE_INFO结构数组。请参阅下面的示例代码。

对于IPv6,"NetMask“的概念与在IPv4中的应用方式不同。See here for more details

因此,您可以使用SIO_GET_INTERFACE_LIST或GetIpAddrTable作为IPv4接口的网络掩码。但对于IPv6,您可能必须详细说明您真正想要用这些信息做什么。

代码语言:javascript
复制
int _tmain(int argc, _TCHAR* argv[])
{
    WSAData data = {};
    sockaddr_in addrLocal = {};
    INTERFACE_INFO infolist[100] = {};
    DWORD dwBytesReturned = 0;
    DWORD dwNumInterfaces = 0;

    ::WSAStartup(MAKEWORD(2,2), &data);
    int s = socket(AF_INET, SOCK_DGRAM, 0);
    int result = WSAIoctl(s, SIO_GET_INTERFACE_LIST, NULL, 0, (void*)infolist, sizeof(infolist), &dwBytesReturned, NULL, NULL);
    dwNumInterfaces = dwBytesReturned / sizeof(INTERFACE_INFO);

    for (DWORD index = 0; index < dwNumInterfaces; index++)
    {
        char szIP[120]={};
        char szBroadcast[120]={};
        char szNetMask[120]={};

        if (infolist[index].iiAddress.Address.sa_family == AF_INET)
        {
            // ipv4
            sockaddr_in* pAddr4 = &infolist[index].iiAddress.AddressIn;
            inet_ntop(AF_INET, &pAddr4->sin_addr, szIP, ARRAYSIZE(szIP));

            pAddr4 = &infolist[index].iiBroadcastAddress.AddressIn;
            inet_ntop(AF_INET, &pAddr4->sin_addr, szBroadcast, ARRAYSIZE(szBroadcast));

            pAddr4 = &infolist[index].iiNetmask.AddressIn;
            inet_ntop(AF_INET, &pAddr4->sin_addr, szNetMask, ARRAYSIZE(szNetMask));
        }
        else
        {
            continue;
        }

        printf("IP:%s   NetMask:%s    Broadcast:%s\n", szIP, szNetMask, szBroadcast);
    }

    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14119348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档