- 论坛徽章:
- 0
|
我记得gethostbyname()可以取到以太网接口地址,怎么现在就能取道环回接口地址?下面的代码只能取到环回接口,为什么呢?
- #include <netinet/in.h>
- #include <sys/types.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <netdb.h>
- #include <stdio.h>
- void err_sys(const char *errmsg);
- int main(int argc, char **argv)
- {
- struct hostent *h;
- char hostname[] = "localhost.localdomain";
- char addr[INET_ADDRSTRLEN];
- int i;
- if ((h = gethostbyname(hostname)) == NULL) {
- fprintf(stderr, "gethostbyname error: %s\n", hstrerror(h_errno));
- exit(1);
- }
-
- for (i = 0; h->h_addr_list[i] != NULL; i++) {
- if (inet_ntop(AF_INET, h->h_addr_list[i], addr, sizeof(addr)) == NULL)
- err_sys("inet_ntop error");
- else
- printf("IP address: %s\n", addr);
- }
- exit(0);
- }
- void err_sys(const char *errmsg)
- {
- perror(errmsg);
-
- exit(1);
- }
复制代码
怎么搞的呢? |
|