VC获取局域网内所有登陆电脑的IP

void GetNameAndIp()
{
    struct hostent *host;
    struct in_addr *ptr;
    DWORD dwScope = RESOURCE_CONTEXT;
    NETRESOURCE *NetResource = NULL;
    HANDLE hEnum;
    WNetOpenEnum(dwScope, NULL, NULL, 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();
}

 

    原文作者:墨痕诉清风
    原文地址: https://blog.csdn.net/u012206617/article/details/105707480
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞