C++ 通过主机名/域名获取IP

清泛原创
代码如下:
#include <winsock2.h> //该头文件定义了Socket编程的功能
#pragma comment(lib,"ws2_32.lib")    //连接ws2_32.lib库.只要程序中用到Winsock API 函数,都要用到 Ws2_32.lib  

void GetHostIP(char *szIPAddr)
{
	WSADATA wsaData;
	char name[155];      //定义用于存放获得主机名的变量
	char *ip;            //定义IP地址变量
	PHOSTENT hostinfo;

	//调用MAKEWORD()获得Winsocl版本的正确值,用于下面的加载Winscok库
	if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) 
	{   //加载Winsock库,如果WSAStartup()函数返回值为0,说明加载成功,程序可以继续往下执行
		if( gethostname ( name, sizeof(name)) == 0) 
		{ //如果成功,将本地主机名存放入由name参数指定的缓冲区中
			if((hostinfo = gethostbyname(name)) != NULL) 
			{ //这是获取主机,如果获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo为PHOSTENT型的变量。
				ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); 
				//inet_addr()函数把地址串转换为IP地址
				//调用inet_ntoa()函数,将hostinfo结构变量中的h_addr_list转化为标准的IP地址(如202.197.11.12.) 
				//printf(" IP地址: %s/n",ip);        //输出IP地址
				sprintf(szIPAddr,"%s",ip);
			} 
		}
		WSACleanup();         //卸载Winsock库,并释放所有资源
	}
}
不解释^_^。

C++ 主机名 域名 获取IP

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部