2011-10-11 2 views
4

getaddrinfo()를 사용하여 URL의 IP 주소를 확인하려고 시도하지만 항상 잘못된 IP 주소를 반환합니다. 여러 URL을 사용해 보았습니다. 결과는 동일합니다. 어떤 도움을 주셔서 감사합니다 크게 감사드립니다.getaddrinfo() 함수가 잘못된 IP 주소를 반환합니다.

이 프로그램은 IP 주소를 returnes : 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; 
} 
+0

당신은 어떤 종류의 프록시 뒤에 있습니까? 또는 당신의 etc/hosts에 잘못된 것이 있습니까? – phoet

+0

틀렸어? > nslookup을 www.google.lk 서버 : DIR-320 주소 : 192.168.0.1 신뢰할 수없는 응답 : 이름 : www.l.google.com 주소 : 209.85.148.147 209.85.148.99 209.85 .148.103 209.85.148.104 209.85.148.105 209.85.148.106 별칭 : www.google.lk www.google.com –

+3

아마 당신은 여러 계층과 구글의 서버보다 더 straightofrward 해상도를 가지고 이름으로 시도해야 앨리어싱 및 라운드 로빈 해상도. 'stackoverflow.com'은 어떨까요? (Google 서버 이름의 해상도는 해결할 위치에 따라 달라집니다.) –

답변

6

google.com있는 실제 IP를 반환하는 insted. 로드 밸런싱 트릭의 일종입니다.

관련 문제