在UNIX中的C程序中,gethostbyname()可用于获取域的地址,如“localhost”。如何将结果从gethostbyname()转换为点十进制表示法。

struct hostent* pHostInfo;
long nHostAddress;

/* get IP address from name */
pHostInfo=gethostbyname("localhost");

if(!pHostInfo){
    printf("Could not resolve host name\n");
    return 0;
}

/* copy address into long */
memset(&nHostAddress, 0, sizeof(nHostAddress));
memcpy(&nHostAddress,pHostInfo->h_addr,pHostInfo->h_length);

nHostAddress包含以下内容:
16777243

如何转换结果,以便获得以下输出:
127.0.0.1

最佳答案

您可以使用struct in_addrinet_ntoa()直接转换为字符串:

char *address = inet_ntoa(pHostInfo->h_addr);

不过,你得到的值(16777243)看起来是错误的——结果是1.0.0.27!

关于c - Unix-如何获取域名的IP地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10403238/

10-12 20:48