C++获取本机的ip地址程序

简介: #include #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库class CInitSock{public: CInitSock(BYTE minorVer = 2,BYTE majorVer = 2) { ...
#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 "a.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);
    }

    system("pause");
}

源代码文件

目录
相关文章
|
3月前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
47 0
|
1月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
112 21
|
2月前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
49 2
|
4月前
|
NoSQL API Redis
c++开发redis module问题之为什么在使用RedisModule_GetApi之前要通过((void**)ctx)[0]这种方式获取其地址
c++开发redis module问题之为什么在使用RedisModule_GetApi之前要通过((void**)ctx)[0]这种方式获取其地址
|
3月前
|
PHP C++ Python
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
66 0
|
3月前
|
C++
c++学习笔记03 程序流程结构
C++学习笔记,主要介绍了程序流程结构,包括顺序结构、选择结构和循环结构。选择结构中详细解释了if语句、三目运算符和switch语句的用法和注意事项。循环结构部分则涵盖了while循环、do-while循环和for循环的语法和使用技巧。此外,还介绍了跳转语句,包括break、continue和goto语句的用途和用法。
35 0
|
5月前
|
C语言 图形学 C++
|
5月前
|
编译器 C++
C++:继承性_程序
C++:继承性_程序
31 1
|
5月前
|
存储 算法 程序员
【C++进阶】深入STL之vector:构建高效C++程序的基石
【C++进阶】深入STL之vector:构建高效C++程序的基石
54 1