
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