
	                	                 
gethostbyname 함수는 호스트 이름을 IP 주소로 변환하는 데 사용됩니다. 그러나 리턴 타입은 struct hostent* 이며, IP 주소를 직접 얻을 수는 없습니다. struct hostent*은 호스트 이름, IP 주소, 도메인 이름 등과 관련된 정보를 포함하는 구조체입니다.
struct hostent*을 사용하여 IP 주소를 얻으려면, 다음과 같이 할 수 있습니다.
#hostingforum.kr
c
#include 
#include 
int main() {
    struct hostent *he;
    char *ip;
    he = gethostbyname("example.com");
    if (he == NULL) {
        printf("호스트 이름을 찾을 수 없습니다.n");
        return 1;
    }
    ip = inet_ntoa(*((struct in_addr *)he->h_addr));
    printf("IP 주소: %sn", ip);
    return 0;
}
gethostbyname 함수는 deprecated 함수로, 대신 사용할 수 있는 함수가 있습니다. 그 중 하나는 getaddrinfo 함수입니다.
getaddrinfo 함수는 호스트 이름, 서비스 이름, 또는 IP 주소를 사용하여 소켓 주소를 얻을 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
c
#include 
#include 
int main() {
    struct addrinfo *ai;
    struct addrinfo hints;
    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_INET;
    getaddrinfo("example.com", NULL, &hints, &ai);
    if (ai == NULL) {
        printf("호스트 이름을 찾을 수 없습니다.n");
        return 1;
    }
    struct sockaddr_in *sin = (struct sockaddr_in *)ai->ai_addr;
    char ip[INET_ADDRSTRLEN];
    inet_ntop(AF_INET, &sin->sin_addr, ip, INET_ADDRSTRLEN);
    printf("IP 주소: %sn", ip);
    freeaddrinfo(ai);
    return 0;
}
getaddrinfo 함수는 gethostbyname 함수보다 더 안전하고 유연한 방법으로 호스트 이름을 IP 주소로 변환할 수 있습니다.
2025-07-22 18:54