只需調用一個函數即可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; }