WEB – программирование

8-14-2020

Сетевое программирование I

Задачи, которые нужно пройти

«Общие, неофициальные» спецификации »программ, которые будут реализованы, показаны ниже. Другими словами: реализовывать программы, по крайней мере, с функциональностью, описанной ниже.

Любые решения, принятые во время реализации, важные с точки зрения

  • «сетевое программирование» – выбор библиотек / интерфейсов, протоколов и т. д.,
  • пользователь – например, как запускаются программы должны быть помечены (или описаны) и обоснованы в исходном коде или в отдельном файле.

Задания (шаги) 1, 2, 3 и 4 являются обязательными – выполнение всех заданий гарантировано  в индексе. Выполнение хотя бы некоторых из заданий, отмеченных как «bis», получит оценку в индексе (от четырех и выше). Также хотим Вам предложить  книги программирование

Шаг 1 – ‘Сервер’

Программа с именем «сервер» отвечает на запросы, считываемые со стандартного ввода, отправляя ответ на стандартный вывод. Запрос представляет собой одну строку текста, ответ – любое количество текста. Программа отвечает на следующие запросы:

  • время – ответ – текущее время.
  • info – в ответ сервер выдает идентификатор пользователя, которому принадлежит сервер, и свой идентификатор (процесса)
  • finger-server отвечает точно так же, как и команда finger (… которую можно вызвать здесь)
  • dir XYZ – сервер отвечает содержимым каталога, имя которого указано в месте XYZ (ЗАПРЕЩАЕТСЯ использовать команду ls и т.п.).
  • help-server отвечает множеством команд, которые он обслуживает

Программа завершается, когда получает сигнал SIGINT.

В следующих шагах (задачах) необходимо использовать программу сервер ” в виде исполняемого файла (!)

Шаг 2 – Связь через очередь сообщений

Программы client_mq и server_mq общаются друг с другом через очередь сообщений.

Программа client_mq должна читать запросы из стандартного ввода, отправлять их через очередь сообщений в программу mq_server, получать ответ таким же образом и записывать его на стандартный вывод. После ввода команды “exit” программа “client_mq” должна завершиться.

Программа “mq_server” должна получать запросы от программы “mq_client”, пересылать их в программу “server” (из шага 1), работающую как ОСНОВНОЙ ПРОЦЕСС, и после получения ответа отправлять его в “mq_client”. , Программа “mq_server” должна завершиться после получения сигнала SIGINT.

Шаг 3 – ‘server2’

Спецификация программы ” server2 ” – это спецификация программы ” server ”, расширенная следующими условиями:

Программа, используя информацию из базы данных / etc / hosts, отвечает на запросы

  • hostbyaddr ADDR, где ADDR – это адрес в формате xxx.xxx.xxx.xxx
  • hostbyname NAME, где NAME – любая строка символов (буквенно-цифровая)

полная информация о хосте, включая его имя, все назначенные адреса и псевдонимы. Если хост с данным именем или адресом отсутствует в базе данных, программа должна включить соответствующее сообщение в ответ.

Шаг 4 – Интернет-соединение с использованием сокетов

Две программы общаются друг с другом через сокеты (протокол подключения, домен интернет-адреса):

  • ” client_sock ” – функциональность такая же, как и в ” client_mq ” (за исключением, конечно, носителя, используемого для связи)
  • “ser_sock” – СО-сервер. Для интерпретации запроса используется программа «server2» (так же, как и в случае с «mq_server»).

Шаг 1bis – Обработка дополнительных запросов через “серверную” программу

  • pwd-server отвечает именем рабочего каталога
  • cd DIRECTORY – сменить рабочий каталог на DIRECTORY. Сервер отвечает “ок” или “ошибка!”
  • получить ФАЙЛ – сервер отвечает содержимым (текстового) ФАЙЛА из рабочего каталога.
  • dir-server отвечает содержимым рабочего каталога.
  • (…)

Шаг 2bis – Связь с использованием общей памяти

Две программы: «client_shm» и «server_shm» взаимодействуют друг с другом посредством разделяемой памяти. Остальная часть спецификации аналогична шагу 2.

Шаг 3bis – Обработка дополнительных запросов программой server2

Программа обрабатывает дополнительные запросы к базам данных / etc / networks, / etc /tocols и / etc / services.

Шаг 4bis – Итерационный сервер для адресных доменов Internet и Unix

Программы «rock_i_client» и «rock_i_server» взаимодействуют друг с другом через сокеты, используя протокол без установления соединения. Связь возможна в адресных доменах Internet и Unix (домен следует определять на основе аргумента, указанного при запуске программ). Программа server_sock_i – это сервер ITERATIONAL, который интерпретирует запросы с помощью server2. Функциональность клиента «rock_i» такая же, как, например, «rock_client».

Також хочемо вам порекомендувати книги программирование