1. 程式人生 > >Linux下用C實現域名到IP的轉換(域名解析)

Linux下用C實現域名到IP的轉換(域名解析)

只需呼叫一個函式即可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;
}