我有这个密码:
struct hostent *host;
struct hostent *serverHost;
if ((host = gethostbyname(param.ipadress)) == NULL)
{
return -1;
}
if ((serverHost = gethostbyname(param.dnsserver)) == NULL)
{
return -1;
}
现在当我尝试
host->h_addr
时,它包含param.dnsserver
中的地址。怎么了?我做错什么了? 最佳答案
gethostbyname
和gethostbyaddr
是不应再使用的旧函数。
对于他们的POSIX (2004) description:
gethostbyaddr()和gethostbyname()函数可以返回指向静态数据的指针,这些指针可能会被随后对这些函数的调用所覆盖。
这意味着您需要在后续调用之前从返回值中复制所需的部分。
另外:
gethostbyaddr()和gethostbyname()函数可能在将来的版本中被撤回。
事实上,它们已经不在POSIX 2008中了。
替代品包括:
与gethostbyaddr()和gethostbyname()函数相比,getaddrinfo()
和getnameinfo()
函数更受欢迎。
关于c - 如何在代码中两次使用gethostbyname,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13259039/