2009-12-27 2 views
3

나는 기본 소켓 명령을위한 소켓 주소를 찾기 위해 getaddrinfo를 사용 해왔다. 하지만 최근에 나에게 반환하는 주소는 inet_ntop을 사용하여 발견 한 가짜 IP 주소입니다. 내 코드뿐만 아니라 Beej's Guide에 제공된 코드를 시도했으며 두 코드 모두 동일한 결과를 산출합니다. 여기에 코드 없습니다 : 아무리 내가 사용하는 어떤 주소getaddrinfo & inet_ntop의 가짜 IP 주소

struct addrinfo hints, *info; 
int status; 

memset(&hints, 0, sizeof hints); 

hints.ai_family = AF_INET; 
hints.ai_socktype = SOCK_STREAM; 

if(status = getaddrinfo(address, port, &hints, &info)) { 
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status)); 
} 

char ip4[INET_ADDRSTRLEN]; 
inet_ntop(AF_INET, info->ai_addr, ip4, INET_ADDRSTRLEN); 

std::cout<<ip4<<std::endl; 

, 항상 나 256 * X + Y 포트 번호와 동일한 형태

16.2.x.y

의 IP 제공합니다. 아무도 이런 일이 일어난 것을 본 적이 없습니까?

답변

6

당신은 inet_ntop

((sockaddr_in const *)info->ai_addr)->sin_addr 

을 통과하지할까요?

+1

그래, 약간 도움이 될 것 같습니다. : P 고마워! 실제로 & ((const sockaddr_in *) info-> ai_addr) -> sin_addr입니다. – Xymostech