VC++扫描获取局域网活动IP

void GetNameAndIp()
{
    struct hostent *host;
    struct in_addr *ptr;
    DWORD dwScope = RESOURCE_CONTEXT;
    NETRESOURCE *NetResource = NULL;
    HANDLE hEnum;
    WNetOpenEnum(dwScope,NULL,&hEnum);
    WSADATA wsaData;
    WSAStartup(MAKEWORD(1,1),&wsaData);
    if (hEnum)
    {
        DWORD Count = 0xFFFFFFFF;
        DWORD BufferSize = 10240;
        LPVOID Buffer = new char[10240];
        WNetEnumResource(hEnum,&Count,Buffer,&BufferSize);
        NetResource = (NETRESOURCE*)Buffer;
        char szHostName[200];
        for (unsigned int i = 0; i < BufferSize / sizeof(NETRESOURCE); i++,NetResource++)
        {
            if (NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY)
            {
                if (NetResource->lpRemoteName)
                {
                    CString strFullName = NetResource->lpRemoteName;
                    if (0 == strFullName.Left(2).Compare(_T("\\\\")))
                        strFullName = strFullName.Right(strFullName.GetLength() - 2);
                    gethostname(szHostName,strlen(szHostName));
                    USES_CONVERSION;
                    char *pchar = T2A(strFullName);
                    host = gethostbyname(pchar);
                    if (host == NULL) continue;
                    ptr = (struct in_addr *) host->h_addr_list[0];
                    string str = "";
                    for (int n = 0; n<4; n++)
                    {
                        CString addr;
                        if (n > 0)
                        {
                            str += ".";
                        }
                        int value = (unsigned int)((unsigned char*)host->h_addr_list[0])[n];
                        char p[20];
                        sprintf(p,"%d",value);
                        str.append(p);
                    }
                    std::cout <<"IP:"<< str <<" Name:"<<host->h_name<< std::endl;
                }
            }
        }
        delete Buffer;
        WNetCloseEnum(hEnum);
    }
    WSACleanup();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐