C++獲取本機IP地址


對網絡庫簡單的封裝了一下,以后自己使用的時候方便了很多

#include <WinSock2.h>
#pragma comment(lib,"ws2_32")        //鏈接到ws2_32動態鏈接庫

class CInitSock
{
public:
    CInitSock(BYTE minorVer = 2,BYTE majorVer = 2)
    {
        WSADATA wsaData;
        WORD VersionRequset;
        VersionRequset = MAKEWORD(minorVer,majorVer);
        //裝載winsock庫
        if (WSAStartup(VersionRequset,&wsaData)!=0)
        {
            //裝載winsock庫失敗,推出
            exit(0);
        }
    }
    ~CInitSock()
    {
        WSACleanup();
    }
};
#include <iostream>
#include "../Common/CInitSock.h"
using namespace std;
CInitSock Initsock;
bool GetIp();
int main()
{
    GetIp();
    return 0;
}
bool GetIp()
{
    char szText[256];
    //獲取本機主機名稱
    int iRet;
    iRet = gethostname(szText,256);
    int a = WSAGetLastError();
    if (iRet!=0)
    {
        printf("gethostname()  Failed!");
        return FALSE;
    }
    //通過主機名獲取到地址信息
    HOSTENT *host = gethostbyname(szText);
    if (NULL==host)
    {
        printf("gethostbyname() Failed!");
        return false;
    }
    in_addr PcAddr;
    for (int i=0;;i++)
    {
        char *p = host->h_addr_list[i];
        if (NULL==p)
        {
            break;
        }
        memcpy(&(PcAddr.S_un.S_addr),p,host->h_length);
        char*szIP = ::inet_ntoa(PcAddr);
        printf("本機的ip地址是:%s\n",szIP);
    }
}

 


免責聲明!

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



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