- Нужно написать две программы, которые будут коммуницировать при помощи сокетов. Одна программа - сервер, вторая - клиентское приложение
- Сервер есть demon-ом, которые после запуска должен отрезаться от терминала, с которого был запущен. Программа сервера запускает обязательно с одной из двух опций:
1. -p port , которая приведёт к тому, что сервер начнет работать в фоновом режиме, слушая подключения клиентов на порте port на всех доступных интерфейсах. В системе может работать одновременно только один инстанс нашего сервера, попытка заново его запустит должна быть просигнализировала должным сообщением.
2. -q , которая приведёт к тому, что будет проверено, работает ли актуально в системе инстанс сервера, и если это окажется правдой - инстанс закроется.
- Клиентское приложение (программа пользователя) запускается с обязательными четырьмя параметрами [ -a addres_ip, -p port, -s string, -o operation ], которые показывают. к какому серверу хотим подключиться и что сервер должен для нас сделать. После подключения к серверу клиент пересылает ему цепочку знаков string а так же операцию к исполнению operation. Разрешенные операции это tolower, toupper и invert.
- Сервер отвечает клиенту соответственно с полученным требованием, пересылая обратно модифицированную цепь знаков (все литеры должны быть уменьшены, увеличены или записаны в обратном порядке)
- После получения ответа клиент выводит ответ на экран и заканчивает свою работу
- Необходимо взять во внимание возможность появления ошибочных ситуаций и, соответственно, на них не реагировать (пример - попытка отправки ответа клиенту, который закончил работу)
- В сервере необходимо использовать механизм мультиплексинга.
- К коду программы должны быть написаны комментарии и обьяснен алгоритм работы
- Программа должна быть написана на чистом С с использованием стандартных библиотек
Данное задание представляет из себя два маленьких скрипта, один из которых выполняет роль простого сервера, который выполняет одну из трёх запрашиваемых функций и отправляет ответ. Второй же - клиент, который после запуска отправляет запрос на сервер, ждёт ответ, после получения - закрывается. Все исполняется на локальной машине, и при проверке задания не будет выходить за рамки локальной сети, соответственно реализация серьезных сетевых протоколов не является необходимой.