Анцелевич: написать астрологический сервер с сообщениями переменной
длины, использующий select, с фиксированным таймаутом (т.е. если в
течение 10 секунд по какому-либо соединению не передано и не принято ни
одного байта, его надо закрыть).
Щербаков: написать астрологический сервер на основе механизма передачи
сообщений и блокирующими сокетами (process-per-request для процессов,
логически являющихся частью прокси), с фиксированной длиной сообщений.
Для взаимодействия с хранителем гороскопов использовать Unix-domain
сокеты, man 7 unix.
Колмогорцев: написать астрологический сервер с сообщениями фиксированной
длины, использующий epoll с флагом EPOLLET.
Неволин: Написать автрологический сервер, использующий модель prefork с
сообщениями фиксированной длины. Для того, чтобы у процессов была общая
память для хранения гороскопов, использовать системный вызов mmap.
Полезные флаги: MAP_SHARED | MAP_ANONYMOUS. Для защиты общих данных от
одновременного изменения несколькими процессами использовать безымянный
семафор (man sem_init и далее по ссылкам).
Рекомендуется помимо основной задачи реализовать еще несколько "вредных"
клиентов, которые отсылают команды по одному байту с задержками,
склеивают несколько команд в один вызов send(), закрывают соединение на
середине получения гороскопа, отправляют невалидные команды и т.п.
Смысл: обнаружить и исправить типичные баги до сдачи своего сервера.
Задачи, которые были взяты на прошлой неделе, записаны не у меня, а у
Марка. Поэтому я их выслать сейчас не могу.
--
Александр Патраков
Забыл еще одну задачу
Гареев: астрологический клиент, использующий select, который спрашивает
прогнозы одновременно у нескольких серверов. Сообщения имеют переменную
длину. Знак Зодиака и список серверов (в формате host:port) передаются в
командной строке.
--
Александр Патраков
> А получить задачу можно?
Конечно!
Астрологический прокси на prefork со строками переменной длины и с
таймаутами через setsockopt(... SO_RCVTIMEO и SO_SNDTIMEO ...). В
случае таймаута со стороны астролога, клиенту передается прогноз "You
are unlucky".
Плюс к этому желательно какой-нибудь набор "вредных" клиентов и
серверов, чтобы показать, что функциональность с таймаутом
действительно работает.
--
Александр Патраков