Читаем Разработка приложений в среде Linux. Второе издание полностью

Вот так выглядит поиск соответствия для хоста Internet, который имеет и IPv4, и IPv6 конфигурации.

$ ./netlookup --host www.6bone.net —stream

IPv6 stream tcp host 3ffe:b00:c18:1::10

IPv4 stream tcp host 206.123.31.124

Для того чтобы увидеть полный перечень опций командной строки, которые предлагает netlookup.с, запустите данную программу без параметров.

  1: /* netlookup.с */

  2:

  3: #include

  4: #include

  5: #include

  6: #include

  7: #include

  8: #include

  9:

 10: /* Вызывается, если во время обработки командной строки происходит ошибка;

 11:    отображает короткое сообщение для пользователя и завершается. */

 12: void usage(void) {

 13:  fprintf(stderr, "использование: netlookup [--stream] [--dgram] "

 14:   "[--ipv4] [--ipv6] [--name] [--udp]\n");

 15:  fprintf (stderr, " [--tcp] [--cfg] "

 16:   "[--service <служба>] [--host <имя_хоста>]\n");

 17:  exit(1);

 18: }

 19:

 20: int main(int argc, const char ** argv) {

 21:  struct addrinfo * addr, * result;

 22:  const char ** ptr;

 23:  int rc;

 24:  struct addrinfo hints;

 25:  const char * serviceName = NULL;

 26:  const char * hostName = NULL;

 27:

 28:  /* очищает структуру подсказок */

 29:  memset(&hints, 0, sizeof(hints));

 30:

 31:  /* анализирует аргументы командной строки, игнорируя argv[0]

 32:

 33:     Структура hints, параметры serviceName и hostName будут

 34:     заполнены на основе переданных аргументов. */

 35:  ptr = argv + 1;

 36:  while (*ptr && *ptr[0] == '-') {

 37:   if (!strcmp(*ptr, "--ipv4"))

 38:    hints.ai_family = PF_INET;

 39:   else if (!strcmp(*ptr, "--ipv6"))

 40:    hints.ai_family = PF_INET6;

 41:   else if (!strcmp(*ptr, "--stream"))

 42:    hints.ai_socktype = SOCK_STREAM;

 43:   else if (!strcmp(*ptr, "--dgram"))

 44:    hints.ai_socktype = SOCK_DGRAM;

 45:   else if (!strcmp(*ptr, "--name"))

 46:    hints.ai_flags |= AI_CANONNAME;

 47:   else if (!strcmp(*ptr, "--cfg"))

 48:    hints.ai_flags |= AI_ADDRCONFIG;

 49:   else if (!strcmp(*ptr, "--tcp")) {

 50:    hints.ai_protocol = IPPROTO_TCP;

 51:   } else if (!strcmp(*ptr, "--udp")) {

 52:    hints.ai_protocol = IPPROTO_UDP;

 53:   } else if (!strcmp(*ptr, "--host")) {

 54:    ptr++;

 55:    if (!*ptr) usage();

 56:    hostName = *ptr;

 57:   } else if (!strcmp(*ptr, "--service")) {

 58:    ptr++;

 59:    if (!*ptr) usage();

 60:    serviceName = *ptr;

 61:   } else

 62:    usage();

 63:

 64:   ptr++;

 65:  }

 66:

 67:  /* необходимы имена hostName, serviceName или оба */

 68:  if (!hostName && !serviceName)

 69:   usage();

 70:

 71:  if ((rc = getaddrinfo(hostName, serviceName, &hints,

 72:   &cresult))) {

 73:   fprintf(stderr, "сбой поиска службы: %s\n",

 74:    gai_strerror(rc));

 75:   return 1;

 76:  }

 77:

 78:  /* проходит по связному списку, отображая все результаты */

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Adobe InDesign CS3
Adobe InDesign CS3

Книга посвящена верстке и макетированию в программе Adobe InDesign CS3. Помимо того что в ней описываются возможности программы, рассматриваются также принципы и традиции верстки, приводятся примеры решения типичных задач. Все это позволит читателю не только овладеть богатым инструментарием программы, но и грамотно применять его.Материал книги разделен на логические части: теоретические сведения, инструментарий программы, решение задач, – а также рассчитан на два уровня подготовки читателей – начинающих и опытных пользователей, что выгодно отличает книгу от других изданий. Это позволит применять ее как новичкам для знакомства с программой, так и пользователям со стажем для пополнения своих знаний.

Владимир Гавриилович Завгородний , Владимир Завгородний

Программирование, программы, базы данных / Программное обеспечение / Книги по IT