Функция getaddrinfo () возвращает неправильный IP-адрес - PullRequest
4 голосов
/ 11 октября 2011

Я пытаюсь определить IP-адрес URL с помощью getaddrinfo (), но он всегда возвращает неправильный IP-адрес, я пробовал с несколькими URL-адресами, и результат один и тот же. любая помощь будет принята с благодарностью.

Программа возвращает IP-адрес: 209,85,175,99, возвращенный реальным IP-адресом, который составляет 74,125,39,147

.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

int
main()
{
 char *hostname = "www.google.lk";
 struct addrinfo hints, *res;
 struct in_addr addr;
 int err;

 memset(&hints, 0, sizeof(hints));
 hints.ai_socktype = SOCK_STREAM;
 hints.ai_family = AF_INET;

 if ((err = getaddrinfo(hostname, NULL, &hints, &res)) != 0) {
 printf("error %d\n", err);
 return 1;
 }

 addr.s_addr = ((struct sockaddr_in *)(res->ai_addr))->sin_addr.s_addr;

 printf("ip address : %s\n", inet_ntoa(addr));

 freeaddrinfo(res);

 return 0;
}

1 Ответ

6 голосов
/ 11 октября 2011

google.com может разрешать использование разных IP-адресов в зависимости от вашего местоположения.Это своего рода трюк с балансировкой нагрузки.

...