Linux下用C實現域名到IP的轉換(域名解析)
阿新 • • 發佈:2018-12-04
只需呼叫一個函式即可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; }