只需调用一个函数即可gethostbyname(),gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。下面是函数原型:
Windows平台下
#include <winsock2.h>
struct hostent FAR *PASCAL FAR gethostbyname(const char
FAR * name);
name:指向主机名的指针。
Linux平台下
#include <netdb.h>
struct hostent *gethostbyname(const char * hostname);
返回:非空指针——成功,空指针——出错,同时设置h_errno
C语言程序实现:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
int main(int argc, char *argv[])
{
struct hostent *h;
char hostname[40];
printf("请输入域名\n");
scanf("%s",hostname);
getchar();
if((h=gethostbyname(hostname))==NULL)
{
fprintf(stderr,"不能得到IP\n");
exit(1);
}
printf("HostName :%s\n",h->h_name);
printf("IP Address :%s\n",inet_ntoa(*((struct in_addr *)h->h_addr)));
return EXIT_SUCCESS;
}