반응형
#include <netdb.h>
struct hostent *gethostbyname(const char *name);
The gethostbyname() function searches for information for a host
with the hostname specified by the character-string parameter name.
hostent 구조체는 <netdb.h>에 다음과 같이 정의되어 있다.
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 */
char **h_addr_list; /* list of addresses from name server */
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
};
반환값
gethostbyname() 그리고 gethostbyaddr() 함수는 hostent 구조체를 반환하거나 만일 에러가 발생한다면 NULL 포인터를 반환한다. 에러시, h_errno 변수는 에러 넘버를 가진다.
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
int main(int argc, char **argv)
{
struct hostent *myent;
struct in_addr *myen;
long int *add;
myent = gethostbyname(argv[1]);
if (myent == NULL)
{
perror("ERROR : ");
exit(0);
}
printf("%s\n", myent->h_name);
while(*myent->h_addr_list != NULL)
{
add = (long int *)*myent->h_addr_list;
myen->s_addr = *add;
printf("%s\n", inet_ntoa(*myen));
myent->h_addr_list++;
}
}
반응형