概述
bool hostname2ip(const std::string hostname, std::string &ip)
{
struct hostent * hptr;
struct in_addr * addr_list;
hptr=gethostbyname(hostname.c_str());
if(hptr==NULL)
{
std::cout<<"Can't access host data base, please check host name!"<<std::endl;
return false;
}
if(hptr->h_addr_list==NULL)
{
std::cout<<"Can't access host address list, please check it!"<<std::endl;
return false;
}
if(hptr->h_addr_list[0]==NULL)
{
std::cout<<"Can't access host 1st element of address list, please check it!"<<std::endl;
return false;
}
ip=inet_ntoa(*((in_addr *)hptr->h_addr_list[0]));
return true;
}
基本思想是通过gethostbyname函数获取hostent数据,然后取出hostent中的地址信息
hostent结构如下
/* Description of data base entry for a single host. */
struct hostent
{
char *h_name; /* Official name of host. 主机名 */
char **h_aliases; /* Alias list. 主机别名*/
int h_addrtype; /* Host address type. 主机地址类型*/
int h_length; /* Length of address. 主机地址长度*/
char **h_addr_list; /* List of addresses from name server. 主机地址列表 */
#ifdef __USE_MISC
# define h_addr h_addr_list[0] /* Address, for backward compatibility. 主机地址列表中第一个地址*/
#endif
};
最后
以上就是陶醉外套为你收集整理的hostname转ip功能的全部内容,希望文章能够帮你解决hostname转ip功能所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复