zoukankan      html  css  js  c++  java
  • 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
    ",szIP);
        }
    }
  • 相关阅读:
    UVa 820 因特网带宽(最大流)
    UVa 1001 奶酪里的老鼠(Dijkstra或Floyd)
    UVa 821 网页跳跃(Floyd)
    UVa 11624 大火蔓延的迷宫
    UVa 10881 蚂蚁
    UVa 11300 分金币
    UVa 11729 突击战
    《额尔古纳河右岸》读书笔记
    HDU 1083 Courses(二分图匹配模板)
    UVa 10618 跳舞机
  • 原文地址:https://www.cnblogs.com/codergeek/p/3260428.html
Copyright © 2011-2022 走看看