Книга: UNIX: разработка сетевых приложений
30.2. Альтернативы для клиента TCP
30.2. Альтернативы для клиента TCP
Мы уже обсуждали различные способы устройства клиентов, но стоит тем не менее еще раз обратить внимание на относительные достоинства и недостатки этих способов.
1. В листинге 5.4 показан основной способ устройства клиента TCP. С этой программой были связаны две проблемы. Во-первых, когда она блокируется в ожидании ввода пользователя, она не замечает происходящих в сети событий, например отключения собеседника от соединения. Во-вторых, она действует в режиме остановки и ожидания, что неэффективно в случае пакетной обработки.
2. Листинг 6.1 содержит следующую, модифицированную версию клиента. С помощью функции select
клиент получает информацию о событиях в сети во время ожидания ввода пользователя. Однако проблема этой версии заключается в том, что программа не способна корректно работать в пакетном режиме. В листинге 6.2 эта проблема решается путем применения функции shutdown
.
3. С листинга 16.1 начинается рассмотрение клиентов, использующих неблокируемый ввод-вывод.
4. Первым из рассмотренных нами клиентов, вышедшим за пределы ограничений, связанных с наличием единственного процесса или потока для обслуживания всех запросов, является клиент, изображенный в листинге 16.6. В этом случае использовалась функция fork
, и один процесс обрабатывал передачу данных от клиента к серверу, а другой — в обратном направлении.
5. В листинге 26.1 используются два потока вместо двух процессов.
В конце раздела 16.2 мы резюмируем различия между перечисленными версиями. Как мы отметили, хотя версия с неблокируемым вводом-выводом является самой быстродействующей, ее код слишком сложен, а применение двух потоков или двух процессов упрощает код.
- 30.1. Введение
- 30.2. Альтернативы для клиента TCP
- 30.3. Тестовый клиент TCP
- 30.4. Последовательный сервер TCP
- 30.5. Параллельный сервер TCP: один дочерний процесс для каждого клиента
- 30.6. Сервер TCP с предварительным порождением процессов без блокировки для вызова accept
- 30.7. Сервер TCP с предварительным порождением процессов и защитой вызова accept блокировкой файла
- 30.8. Сервер TCP с предварительным порождением процессов и защитой вызова accept при помощи взаимного исключения
- 30.9. Сервер TCP с предварительным порождением процессов: передача дескриптора
- 30.10. Параллельный сервер TCP: один поток для каждого клиента
- 30.11. Сервер TCP с предварительным порождением потоков, каждый из которых вызывает accept
- 30.12. Сервер с предварительным порождением потоков: основной поток вызывает функцию accept
- 30.13. Резюме
- Упражнения
- Аватар идеального клиента
- Определение версии клиента
- Снятие ответственности с клиента
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами
- TCP REMOTE BUFFER
- Appendix D. TCP options
- TCP characteristics
- TCP headers
- 4. Стадии бизнес-процесса взаимодействия с клиентами
- TCP connections
- TCP matches
- Tcpmss match