Материал для изучения
11.7. Резюме
Серверы с установлением логического соединения обеспечивают параллельную работу, позволяя сразу нескольким клиентам обмениваться данными с сервером. В настоящей главе описана одна из самых простых реализаций, в которой для создания нового ведомого процесса после получения каждого запроса на установление соединения используется функция fork. Поток в ведущем процессе никогда не вступает во взаимодействие с клиентами; он просто принимает запросы на установление соединения и создает ведомые процессы для обслуживания каждого из них. Поклеить французские натяжные потолки Clipso.
Работа каждого ведомого процесса начинается в главной процедуре сразу после вызова функции fork. Ведущий процесс закрывает свою копию дескриптора сокета для нового соединения, а ведомый процесс закрывает свою копию дескриптора сокета ведущего процесса. Соединение с клиентом прекращается после выхода из ведомого процесса в связи с тем, что операционная система закрывает копию сокета ведомого процесса.
Упражнения
- Доработайте сервер ECHO таким образом, чтобы он регистрировал в журнале время создания каждого ведомого процесса и время завершения работы ведомого процесса. Сколько клиентских программ должно быть вызвано на выполнение, прежде чем обнаружится перекрытие между записями для разных ведомых процессов?
- 11.2. Сколько клиентов может одновременно обратиться к параллельному серверу, приведенному в рассматриваемом примере, прежде чем сервер будет вынужден отказать в обслуживании какому-либо клиенту? Сколько клиентов может обратиться к последовательному серверу, описанному в главе 10, прежде чем клиенты начнут получать отказ в предоставлении обслуживания?
- 11.3. Разработайте последовательную реализацию сервера ECHO. Проведите эксперименты для определения того, сможет ли человек ощутить разницу во времени отклика при работе с параллельной и последовательной версиями.
- 11.4. Доработайте этот пример сервера, чтобы в нем процедура TCPechod явно закрывала соединение, прежде чем выполнить возврат. Объясните, почему явный вызов функции close позволяет ущюстить сопровождение кода.
- 11.5. Разработайте модифицированную версию сервера ECHO, в которой создается новый поток выполнения в том же процессе, а не создается новый процесс, и измерьте разницу во времени выполнения.
- 11.6. Какие сокеты должны быть закрыты ведущими и ведомыми потоками в модифицированной версии сервера, разработанной по условиям предыдущего упражнения? Почему?