‘struct hostent’ has no member named ‘h_addr’
时间: 2024-02-04 11:01:42 浏览: 187
dev_addr_lists.rar_DEV_ADDR
这个错误通常是因为程序使用了过时的函数或结构体。在旧版本的网络编程中,使用`h_addr`来表示主机的IP地址。但是在新版本中,`h_addr`已经被废弃,应该使用`h_addr_list`和`inet_ntoa()`函数来代替。你可以尝试将程序中所有使用`h_addr`的地方替换为`h_addr_list`和`inet_ntoa()`函数来修复这个错误。例如:
```c
struct hostent *hostinfo;
char **addr_list;
char ip[16];
hostinfo = gethostbyname(hostname);
if (hostinfo == NULL) {
printf("gethostbyname failed\n");
return -1;
}
addr_list = (char **)hostinfo->h_addr_list;
for (int i = 0; addr_list[i] != NULL; i++) {
strcpy(ip, inet_ntoa(*(struct in_addr *)addr_list[i]));
printf("IP address: %s\n", ip);
}
```
阅读全文