只需调用一个函数即可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("请输入域名 "); scanf("%s",hostname); getchar(); if((h=gethostbyname(hostname))==NULL) { fprintf(stderr,"不能得到IP "); exit(1); } printf("HostName :%s ",h->h_name); printf("IP Address :%s ",inet_ntoa(*((struct in_addr *)h->h_addr))); return EXIT_SUCCESS; }