gethostbyname 예제

 

이러한 함수는 호스트 이름과 IP 주소 간에 앞뒤로 매핑됩니다. 예를 들어 “www.example.com”이 있는 경우 gethostbyname()를 사용하여 IP 주소를 얻고 구조체 in_addr에 저장할 수 있습니다. 참고 : 이 두 기능은 getaddrinfo () 및 getnameinfo ()에 의해 대체됩니다! 특히 gethostbyname()은 IPv6에서 잘 작동하지 않습니다. gethostbyname()는 “www.yahoo.com”과 같은 문자열을 취하고 IP 주소를 포함하여 수많은 정보를 포함하는 구조형 호주인을 반환합니다. 기타 정보는 공식 호스트 이름, 별칭 목록, 주소 유형, 주소 길이 및 주소 목록입니다. gethostbyaddr()는 구조체 in_addr 또는 구조체 in6_addr를 가져와 해당 호스트 이름(있는 경우)을 가져오므로 gethostbyname()의 반대입니다. 매개 변수에 관해서는 addr가 char*인 경우에도 실제로 포인터를 구조체 in_addr에 전달하려고 합니다. len은 sizeof(구조체 in_addr)이어야 하며 형식은 AF_INET이어야 합니다. 구조체 호적 *gethostbyname (const char *name); 구조체 hostent *gethostbyaddr (const char *addr, int len, int 형식); 다음은 호스트 명령을 에뮬레이트하는 gethostbyname()을 사용하는 간단한 예제입니다. DNS 문제를 디버깅하기 위해 작성했습니다. (지금 현재 네트워크상에서 gethostbyname()은 호스트와 발굴과는 다른 답변을 반환합니다. 다른 호스트 이름을 지나치게 캐싱하는 것입니다.

즉, paulloookup shrub.ca 반환 17.250.248.64, 이는 mail.mac.com (!) 경우 (hp = NULL) { printf (“gethostbyname() 실패n”); } 다른 { printf (“%s = “, hp->h_name); 서명되지 않은 int i=0; 동안 (hp -> h_addr_list[i] *= NULL) { printf (“%s”, inet_ntoa (*(구조체 in_addr*)(hp -> h_addr_list[i])))) i++; } 인쇄물(“n”); }} . (호스트 이름을 조회하려는 점 및 숫자 형식의 IP 주소가 포함된 문자열이 있는 경우 AI_CANONNAME 플래그를 사용하여 getaddrinfo()를 사용하는 것이 좋습니다.) 이 호스트의 IP 주소 목록입니다. 이것은 char**이지만 실제로 는 변장한 s_addr*s의 구조체 배열입니다. 마지막 배열 요소는 NULL입니다. . 배열로 액세스할 수 있는 별칭 목록-마지막 요소는 NULL 입니다. getaddrinfo(), getnameinfo(), gethostname(), errno, perror(), strerror(), 구조체 in_addr . h_addr_list[0]에 대해 일반적으로 정의된 별칭입니다. 이 호스트에 대한 이전 IP 주소(예, 두 개 이상을 가질 수 있음)만 이 필드를 사용하려면 이 필드를 사용합니다.

모든 화장품 변경 사항을 요약하면 다음을 권장합니다 : 버전 = MAKEWORD (2, 0); 오류 = WSAStartup (버전, 및 wsaData); . “링커 인수에 -lws2_32를 추가하는 것을 기억하십시오. 나는 윈도우 7에 이클립스를 사용하여 MinGW를 사용하여 컴파일” 나는 프로젝트 -> 속성 -> 속성 -> C / C = 건물 -> 설정 -> MinGW C ++ 링커 -> 라이브러리에서, 다음 라이브러리 (-l) 나는 “ws2_32″를 입력 한 다음 확인 나는 오류를 가지고 “-lws2_32″, 나는 wh 궁금해 내가 놓친 거야? 죄송합니다 빨리 반환 버튼을 누르면 3) 출구 (-1) 당신이 얻을 것은 당신이 출구를 작성한 것처럼 동일합니다 (255), 이후 -1 표현은 일반적으로 0xffffffffff입니다 32비트 시스템에서 부모 프로세스로 반환 상태는 마지막 8로 잘립니다 비트, 출구(1)는 일반적으로 사용됩니다.