- 论坛徽章:
- 4
|
回复 1# zxq230104
将主机名转换为IP地址的函数实现,name为主机名(可以是IP地址),转换后的IP地址存放在buff中:
in_addr_t getIpaddrByName(const char *name, char *buff, const int bufferSize)
{
struct in_addr ip_addr;
struct hostent *ent;
in_addr_t **addr_list;
if (inet_pton(AF_INET, name, &ip_addr) == 1)
{
if (buff != NULL)
{
snprintf(buff, bufferSize, "%s", name);
}
return ip_addr.s_addr;
}
ent = gethostbyname(name);
if (ent == NULL)
{
return INADDR_NONE;
}
addr_list = (in_addr_t **)ent->h_addr_list;
if (addr_list[0] == NULL)
{
return INADDR_NONE;
}
memset(&ip_addr, 0, sizeof(ip_addr));
ip_addr.s_addr = *(addr_list[0]);
if (buff != NULL)
{
if (inet_ntop(AF_INET, &ip_addr, buff, bufferSize) == NULL)
{
*buff = '\0';
}
}
return ip_addr.s_addr;
} |
|