Читаем Основы программирования в Linux полностью

 if (send_mess_to_server(mess_send)) {

  if (start_resp_from_server()) {

   while (read_resp_from_server(&mess_ret)) {

    if (mess_ret.response == r_success) {

     fwrite(&mess_ret.cdc_entry_data, sizeof(cdc_entry), 1, work_file);

     entries_matching++;

    } else {

     break;

    }

   } /* while */

  } else {

   fprintf(stderr, "Server not responding\n");

  }

 } else {

  fprintf (stderr, "Server not accepting requests\n");

 }

4. Следующая проверка ищет, есть ли совпадения с заданным значением. Далее вызов fseek переводит указатель в файле work_file на место записи следующей порции данных.

 if (entries_matching == 0) {

  fclose(work_file);

  work_file = (FILE *)0;

  return(ret_val);

 }

 (void)fseek(work_file, 0L, SEEK_SET);

5. Если это не первый вызов функции поиска для данного конкретного элемента, программа проверяет, были ли уже найдены совпадения. В заключение в структуру ret_val читается следующий совпадающий элемент. Предшествующие проверки гарантируют наличие совпадающего элемента.

 } else {

  /* не *first_call_ptr */

  if (entries_matching == 0) {

   fclose(work_file);

   work_file = (FILE *)0;

   return(ret_val);

  }

 }

 fread(&ret_val, sizeof(cdc_entry), 1, work_file);

 entries_matching--;

 return(ret_val);

}

Интерфейс сервера server.c

Если у клиента есть интерфейс для обращения к программе app_ui.c, серверу также нужна программа для управления (переименованной) программой cd_access.c, теперь cd_dbm.c. Далее приведена функция main сервера.

1. Начните с объявления нескольких глобальных переменных, прототипа функции process_command и функции перехвата сигнала для обеспечения чистого завершения.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include "cd_data.h"

#include "cliserv.h"


int save errno;

static int server_running = 1;


static void process_command(const message_db_t mess_command);


void catch_signals() {

 server_running = 0;

}

2. Теперь переходите к функции main. После проверки успешного завершения подпрограмм захвата сигнала программа проверяет, передали ли вы -i в командной строке. Если да, она создаст новую базу данных. Если вызов подпрограммы database_initialize в файле cd_dbm.c завершится аварийно, будет выведено сообщение об ошибке. Если все хорошо и сервер работает, любые запросы от клиента направляются функции process_command, которую вы вскоре увидите.

int main(int argc, char *argv[]) {

 struct sigaction new_action, old_action;

 message_db_t mess command;

 int database_init_type = 0;

 new_action.sa_handler = catch_signals;

 sigemptyset(&new_action.sa_mask);

 new_action.sa_flags = 0;

 if ((sigaction(SIGINT, &new_action, &old_action) != 0) ||

  (sigaction(SIGHUP, &new_action, &old_action) != 0) ||

  (sigaction(SIGTERM, &new_action, &old_action) != 0)) {

  fprintf(stderr, "Server startup error, signal catching failed\n");

  exit(EXIT_FAILURE);

 }

 if (argc > 1) {

  argv++;

  if (strncmp("-i", *argv, 2) == 0) database_init_type = 1;

 }

 if (!database_initialize(database_init_type)) {

  fprintf(stderr, "Server error :-\

   could not initialize database\n");

  exit (EXIT_FAILURE);

 }

 if (!server starting()) exit(EXIT_FAILURE);

 while(server_running) {

  if (read_request_from_client(&mess_command)) {

   process_command(mess_command);

  } else {

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

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

Сетевые средства Linux
Сетевые средства Linux

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования — инструменты Linuxconf, Webmin и SWAT.Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.Отзывы о книге Сетевые средства LinuxПоявилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.Александр Стенцин, Help Net Security. Если вы стремитесь в полной мере использовать сетевые возможности Linux — эта книга для вас. Я настоятельно рекомендую прочитать ее.Майкл Дж. Джордан, Linux OnlineВыхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.Роджер Бертон, West, DiverseBooks.com

Родерик В. Смит

ОС и Сети / Книги по IT
Сетевые средства Linux
Сетевые средства Linux

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования — инструменты Linuxconf, Webmin и SWAT.Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.Отзывы о книге Сетевые средства LinuxПоявилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.Александр Стенцин, Help Net Security. Если вы стремитесь в полной мере использовать сетевые возможности Linux — эта книга для вас. Я настоятельно рекомендую прочитать ее.Майкл Дж. Джордан, Linux OnlineВыхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.Роджер Бертон, West, DiverseBooks.com

Родерик В. Смит

ОС и Сети, интернет / ОС и Сети / Книги по IT
Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Питер Нортон , Джон Поль Мюллер

ОС и Сети / Книги по IT