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

📄 gethostip.c

📁 linux内核
💻 C
字号:
#ident "$Id$"/* ----------------------------------------------------------------------- * *    *   Copyright 2001-2004 H. Peter Anvin - All Rights Reserved * *   This program is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation, Inc., 53 Temple Place Ste 330, *   Boston MA 02111-1307, USA; either version 2 of the License, or *   (at your option) any later version; incorporated herein by reference. * * ----------------------------------------------------------------------- *//* * gethostip.c * * Small program to use gethostbyname() to print out a hostname in * hex and/or dotted-quad notation */#include <stdio.h>#include <stdlib.h>#include <netdb.h>#include <sys/socket.h>#include <unistd.h>#include <sysexits.h>#define _GNU_SOURCE		/* For getopt_long */#include <getopt.h>const struct option options[] ={  { "hexadecimal", 0, NULL, 'x' },  { "decimal",     0, NULL, 'd' },  { "dotted-quad", 0, NULL, 'd' },  { "full-output", 0, NULL, 'f' },  { "name",        0, NULL, 'n' },  { "help",        0, NULL, 'h' },  { NULL, 0, NULL, 0 }};const char *program;void usage(int exit_code){  fprintf(stderr, "Usage: %s [-dxnf] hostname/ip...\n", program);  exit(exit_code);}int main(int argc, char *argv[]){  int opt;  int output = 0;  int i;  char *sep;  int err = 0;  struct hostent *host;  program = argv[0];  while ( (opt = getopt_long(argc, argv, "dxfnh", options, NULL)) != -1 ) {    switch ( opt ) {    case 'd':      output |= 2;		/* Decimal output */      break;    case 'x':      output |= 4;		/* Hexadecimal output */      break;    case 'n':      output |= 1;		/* Canonical name output */      break;    case 'f':      output = 7;		/* Full output */      break;    case 'h':      usage(0);      break;    default:      usage(EX_USAGE);      break;    }  }  if ( optind == argc )    usage(EX_USAGE);  if ( output == 0 )    output = 7;			/* Default output */  for ( i = optind ; i < argc ; i++ ) {    sep = "";    host = gethostbyname(argv[i]);    if ( !host ) {      herror(argv[i]);      err = 1;      continue;    }    if ( host->h_addrtype != AF_INET || host->h_length != 4 ) {      fprintf(stderr, "%s: No IPv4 address associated with name\n", argv[i]);      err = 1;      continue;    }    if ( output & 1 ) {      printf("%s%s", sep, host->h_name);      sep = " ";    }    if ( output & 2 ) {      printf("%s%u.%u.%u.%u", sep,	     ((unsigned char *)host->h_addr)[0],	     ((unsigned char *)host->h_addr)[1],	     ((unsigned char *)host->h_addr)[2],	     ((unsigned char *)host->h_addr)[3]);      sep = " ";    }    if ( output & 4 ) {      printf("%s%02X%02X%02X%02X", sep,	     ((unsigned char *)host->h_addr)[0],	     ((unsigned char *)host->h_addr)[1],	     ((unsigned char *)host->h_addr)[2],	     ((unsigned char *)host->h_addr)[3]);      sep = " ";    }    putchar('\n');  }  return err;}

⌨️ 快捷键说明

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