⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hostlab.c

📁 find the information about a host with the DNS retrieving system calls, such as gethostbyname() and
💻 C
字号:
#include <stdio.h>  /*for printf() and fprintf() */#include <arpa/inet.h> /*for inet_addr() */#include <stdlib.h>  /*for exit() */#include <netdb.h>  /*for gethostbyname() and gethostbyaddr() */int main(int argc, char *argv[] ) {              /*convert IP address in numbers-and-dots notation into unsigned long in network byte order*/   if ( inet_addr(argv[1]) != INADDR_NONE ) {                                char **ptr; // pointer to store the host aliases                int i ;   //variable used in the for loop                struct in_addr addr;                char ip[INET_ADDRSTRLEN];                struct hostent *host;                                                      addr.s_addr = inet_addr(argv[1]);                            /* retrive host entry from DNS and query key is an IP address */                 host = gethostbyaddr( (const char*)&addr, sizeof(ip),AF_INET);//cast to generic address                               if ( host == NULL ) {                       printf("failed\n");                       exit(1);                    }                 printf("h_name\t = %s\n", host->h_name);                 printf("h_addrtype\t=%d\n",host->h_addrtype);                 printf("h_length\t=%d \n",host->h_length);                    ptr = host->h_aliases;                  while(*ptr)  {                        printf("host alias\t =%s\n",*ptr);                        ptr++;                    }                  for ( i=0; host->h_addr_list[i] != NULL; i++ ) {                           //mapping the IP address in network byte order to dotted decimal format                           if ( inet_ntop(AF_INET,host->h_addr_list[i],ip,sizeof(ip) ) != NULL)                                 printf("IP address: %s\n",ip);                           else                                 printf("error\n");                     }                            return 0;                 }   // retrieve host entry from DNS and query key is domain name           else {                             char **ptr;                             int i;                             char ip[INET_ADDRSTRLEN];                             struct hostent *host;                                                        host = gethostbyname(argv[1]);                             if ( host== NULL)                                 {                                     printf("failed\n");                                     exit(1);                                }                              printf("h_name\t = %s\n", host->h_name);                              printf("h_addrtype\t= %d\n",host->h_addrtype);                              printf("h_length\t= %d\n",host->h_length);                                                            ptr = host->h_aliases;                                                           while(*ptr) {                                        printf("host alias\t=%s\n", *ptr);                                          ptr++;                                     }  // end while                                                   for ( i=0; host->h_addr_list[i]!= NULL; i++ )  {                                    if(inet_ntop(AF_INET, host->h_addr_list[i],ip,sizeof(ip) ) != NULL )                                             printf("IP  address: %s\n",ip);                                    else                                        printf("error");                             }  // end for                               return 0;             } // end else                   return 0;       }  // end main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -