您的位置:首页 > 编程语言 > C语言/C++

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

2014-05-01 17:48 211 查看

1、简洁版:

#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;
}


2、扩展板:

#include <winsock2.h>
#include <iostream>
using namespace std;
#pragma comment(lib, "WS2_32.lib")

void getIP()
{
WSADATA WSAData; //WSADATA结构被用来储存调用AfxSocketInit全局函数返回的Windows Sockets初始化信息。
if (WSAStartup(MAKEWORD(2, 0),&WSAData)) // 初始化Windows sockets API
{
printf("WSAStartup failed %s\n", WSAGetLastError());
exit(-1); //异常退出
}

char hostName[256];
if(gethostname(hostName,sizeof(hostName))) //获取主机名
{
printf("Error: %u\n", WSAGetLastError());
exit(-1);
}

hostent *host=gethostbyname(hostName); // 根据主机名获取主机信息(含IP)
if(host==NULL)
{
printf("Error: %u\n", WSAGetLastError());
exit(-1);
}

cout<<"正式的主机名: "<<host->h_name<<endl
<<"主机地址类型: "<<host->h_addrtype<<endl
<<"地址清单: "<<host->h_addr_list<<endl
<<"别名列表: "<<host->h_aliases<<endl
<<"地址长度: "<<host->h_length<<endl;

for(int i=0;host->h_addr_list[i]!=0;i++)
{
cout<<"该主机IP"<<i+1<<": "<<inet_ntoa(*(struct in_addr*)*host->h_addr_list)<<endl;
}
WSACleanup();
}

int main()
{
getIP();
system("pause");
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 获取Ip