首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个容易的获取本地ip的函数

2013-01-22 
一个简单的获取本地ip的函数最近在与学生聊关于socket编程时,一个学生问如何获得本地IP,于是我写了一个小

一个简单的获取本地ip的函数
最近在与学生聊关于socket编程时,一个学生问如何获得本地IP,于是我写了一个小函数,分享给刚刚接触socket编程的朋友~
我用的是vs2005
#include <winsock2.h>
char* GetHostIP(void){
charcHost[256];

gethostname(cHost,256);

hostent *pHost= gethostbyname(cHost);
in_addr addr;

char*p= pHost->h_addr_list[0];
memcpy(&addr.S_un.S_addr,p,pHost->h_length);

return inet_ntoa(addr);
}

如果遇到找不到库的问题,可以按照下列步骤进行配置:
项目属性->连接器->输入->附加依赖项->添加ws2_32.lib->应用->确定->解决方案右键->清理解决方案->重新生成解决方案。
小小函数,希望能给初学者带来些许帮助!
[解决办法]


char* GetHostIP(void)
{
int ret;
char cHost[256];

ret = gethostname(cHost,256);
if (ret != 0)
{
ret = GetLastError();
return NULL;
}

hostent *pHost = gethostbyname(cHost);
in_addr addr;

char *p = pHost->h_addr_list[0];
memcpy(&addr.S_un.S_addr,p,pHost->h_length);

return inet_ntoa(addr);
}

int main(int argc, char **argv)
{
char *ip = NULL;
WSADATAwsaData;

WSAStartup(MAKEWORD(2, 2), &wsaData);

printf("%s\n", (ip = GetHostIP()) ? ip : "faild");

WSACleanup();
return 0;
}

最好加上出错处理吧, 不然程序很容易崩掉的。
[解决办法]
这种情况适用于内网,如果一台电脑既有内网又有外网IP,外网IP就查不到了

热点排行