C/C++ 获取本机IP地址信息

本文介绍了一段使用Winsock库获取本地主机IP地址的C++代码。通过调用WSAStartup初始化Winsock,gethostname获取主机名,并利用gethostbyname获取主机详细信息,最终通过inet_ntoa转换IP地址为字符串形式返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这段代码使用了Winsock库来获取本地主机的IP地址。它定义了一个函数getIP(),该函数通过使用Winsock库的函数来获取本地主机名,并进一步获取主机的IP地址。

以下是代码的解释:

  1. 首先,包含了相关的头文件和使用Winsock库时需要链接的WS2_32.lib库。

  2. 接着定义了getIP()函数,用于获取本地主机的IP地址。

  3. getIP()函数中,首先进行了Winsock库的初始化,调用WSAStartup()函数。如果初始化成功,进一步获取本地主机名。这里使用了gethostname()函数,并将主机名存储在hostName字符数组中。

  4. 然后,调用gethostbyname()函数,传入hostName作为参数,该函数会返回hostent结构体指针,包含有关主机的详细信息,包括IP地址。

  5. 如果获取主机信息成功,将IP地址部分提取出来,并将其转换为字符串形式,然后返回。

  6. 如果在上述过程中出现任何错误,函数将返回字符串"Get IP failed."表示获取IP地址失败。

  7. main()函数中,调用getIP()函数获取本地主机的IP地址,并输出结果。

需要注意的是,该代码在Windows平台上运行,它将返回本地主机的IP地址,但请注意代码中使用的函数和库在其他平台上可能需要做适当调整。在运行代码之前,请确保已正确配置Winsock库。

#include<winsock2.h>  
#include<iostream>  
#include<string>

using namespace std;
#pragma comment(lib, "WS2_32.lib")

string getIP()
{
    WSADATA WSAData;
    char hostName[256];
    if (!WSAStartup(MAKEWORD(2, 0),&WSAData))
    {  
        if(!gethostname(hostName,sizeof(hostName)))
        {
            hostent *host=gethostbyname(hostName);
            if(host!=NULL)
            {
                return inet_ntoa(*(struct in_addr*)*host->h_addr_list);
            }
        }
    }      
    return "Get IP failed.";  
}

int main()
{
    cout<<"IP地址为:"<<getIP()<<endl;
    system("pause");
    return 0;   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微软技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值