C++獲取系統信息(IP地址、硬件信息等)


#include<stdio.h>
#include<winsock2.h>    //該頭文件需在windows.h之前
#include<windows.h>
#include<string>
#include<iostream>
#pragma comment(lib,"ws2_32.lib") 
using namespace std;

void getIP()
{
    WSADATA WSAData;                                //WSADATA結構被用來儲存調用AfxSocketInit全局函數返回的Windows Sockets初始化信息。
    if (WSAStartup(MAKEWORD(2, 0),&WSAData))        // 初始化Windows sockets API
    {  
        printf("WSAStartup failed %s\n", WSAGetLastError());
        exit(-1);        //異常退出 
    }  

    char hostName[256];
    if(gethostname(hostName,sizeof(hostName)))        //獲取主機名
    {
        printf("Error: %u\n", WSAGetLastError());
        exit(-1);        //異常退出 
    }
    printf("主機名:             %s\n", hostName);

    hostent *host=gethostbyname(hostName);    // 根據主機名獲取主機信息. 
    if(host==NULL)
    {
        printf("Error: %u\n", WSAGetLastError());
        exit(-1);
    }

    cout<<"主機地址類型:        "<<host->h_addrtype<<endl
        <<"地址清單:            "<<host->h_addr_list<<endl
        <<"別名列表:            "<<host->h_aliases<<endl
        <<"地址長度:            "<<host->h_length<<endl
        <<"正式的主機名:        "<<host->h_name<<endl;

    for(int i=0;host->h_addr_list[i]!=0;i++)
    {
        cout<<"該主機IP"<<i+1<<":           "<<inet_ntoa(*(struct in_addr*)*host->h_addr_list)<<endl;
    }
    cout<<"-----------------------------------------------"<<endl;
    WSACleanup();  
}
void getSysInfo()
{
    SYSTEM_INFO  sysInfo;    //該結構體包含了當前計算機的信息:計算機的體系結構、中央處理器的類型、系統中中央處理器的數量、頁面的大小以及其他信息。
    OSVERSIONINFOEX osvi;
    GetSystemInfo(&sysInfo);
    osvi.dwOSVersionInfoSize=sizeof(osvi);
    if (GetVersionEx((LPOSVERSIONINFOW)&osvi))
    {
        printf("操作系統版本 :      %u.%u.%u\n", osvi.dwMajorVersion, osvi.dwMinorVersion,osvi.dwBuildNumber);
        printf("Service Pack :      %u.%u\n", osvi.wServicePackMajor, osvi.wServicePackMinor);
    }
    printf("處理器架構 :        %u\n", sysInfo.wProcessorArchitecture);
    printf("處理器級別 :        %u\n", sysInfo.wProcessorLevel);
    printf("處理器版本 :        %u\n", sysInfo.wProcessorRevision);
    printf("處理器掩碼 :        %u\n", sysInfo.dwActiveProcessorMask);
    printf("處理器數量 :        %u\n", sysInfo.dwNumberOfProcessors);
    printf("處理器類型 :        %u\n", sysInfo.dwProcessorType);
    printf("頁面大小 :          %u\n", sysInfo.dwPageSize);
    printf("應用程序最小地址 :  %u\n", sysInfo.lpMinimumApplicationAddress);
    printf("應用程序最大地址 :  %u\n", sysInfo.lpMaximumApplicationAddress);
    printf("虛擬內存分配粒度 :  %u\n", sysInfo.dwAllocationGranularity);
    printf("OemId :             %u\n", sysInfo.dwOemId);
    printf("wReserved :         %u\n", sysInfo.wReserved);
}
int main()
{
    getIP();
    getSysInfo();
    return 0;   
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM