• 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);
        }
    }
  • 相关阅读:
    Centos/Docker/Nginx/Node/Jenkins 操作
    MyBatis 流式查询
    127.0.0.1
    Spring中的@Bean注解
    工厂模式
    webservice
    vs每次拉下一个控件都必选设置为绝对位置才可以移动,怎样解决啊
    ASP.NET AJAX 概述
    AJAX介绍
    时间控件
  • 原文地址:https://www.cnblogs.com/codergeek/p/3260428.html
Copyright © 2020-2023  润新知