这段代码使用了Winsock库来获取本地主机的IP地址。它定义了一个函数getIP()
,该函数通过使用Winsock库的函数来获取本地主机名,并进一步获取主机的IP地址。
以下是代码的解释:
-
首先,包含了相关的头文件和使用Winsock库时需要链接的
WS2_32.lib
库。 -
接着定义了
getIP()
函数,用于获取本地主机的IP地址。 -
在
getIP()
函数中,首先进行了Winsock库的初始化,调用WSAStartup()
函数。如果初始化成功,进一步获取本地主机名。这里使用了gethostname()
函数,并将主机名存储在hostName
字符数组中。 -
然后,调用
gethostbyname()
函数,传入hostName
作为参数,该函数会返回hostent
结构体指针,包含有关主机的详细信息,包括IP地址。 -
如果获取主机信息成功,将IP地址部分提取出来,并将其转换为字符串形式,然后返回。
-
如果在上述过程中出现任何错误,函数将返回字符串"Get IP failed."表示获取IP地址失败。
-
在
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;
}