Сетевое программирование 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».
Також хочемо вам порекомендувати книги программирование