본문 바로가기

진리는어디에

도메인 이름을 이용해 IP 주소 얻기(gethostbyname)

gethostbyname

 함수의 이름 대로 이름에서 host 주소를 얻어 올 수 있는 함수다. 그렇다고 해서 꼭 IP주소만을 가져 오느냐 하면 그것도 아니다. struct hostent 라는 구조체를 이요해서 호스트의 대표이름, 별명, 주소의 타입, 주소 리스트들을 얻어 올수 있다. IPv4에서만 정상적으로 돌아가는 함수이며 다음 POSIX에서 퇴출 당할 가능성이 있다고는 하지만 여지껏 일반적으로 잘 사용 되어져 왔던 함수다.

#include <netdb.h>

extern int h_errno;
struct hostent *gethostbyname(const char *name);

struct hostent {
          char    *h_name;        /* official name of host */
          char    **h_aliases;    /* alias list */
          int     h_addrtype;       /* host address type */
          int     h_length;          /* length of address, if IPv4 4 bytes, IPv6 16 bytes return*/
          char    **h_addr_list;  /* list of  IP addresses */
}
#define h_addr  h_addr_list[0]  /* for backward compatibility */

 이 함수는 다른 함수들과 달리 errno를 셋팅하지 않는다. 대신 h_errno를 사용한다. h_errno에서 문자열로 표현된 에러를 얻기 위해서는 hstrerror() 함수를 사용한다.

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!