Книга: UNIX: разработка сетевых приложений
Глава 26
Глава 26
26.1. В примере с функцией fork
будет использоваться 101 дескриптор, один прослушиваемый сокет и 100 присоединенных сокетов. Но каждый из 101 процесса (один родительский и 100 дочерних) имеет только один открытый дескриптор (игнорируем все остальные, такие как стандартный поток ввода, если сервер не является демоном). В случае сервера с потоками используется 101 дескриптор для одного процесса. Каждым потоком (включая основной) обрабатывается один дескриптор.
26.2. Обмена двумя последними сегментами завершения TCP-соединения (сегмент FIN сервера и сегмент ACK клиента в ответ на сегмент FIN сервера) не произойдет. Это переведет клиентский конец соединения в состояние FIN_WAIT_2 (см. рис. 2.4). Беркли-реализации прервут работу клиентского конца, если он остался в этом состоянии, по тайм-ауту через 11 минут [128, с. 825–827]. У сервера же в конце концов закончатся дескрипторы.
26.3. Это сообщение будет выводиться основным программным потоком в том случае, когда он считывает из сокета признак конца файла и при этом другой поток продолжает работать. Простейший способ выполнить это — объявить другую внешнюю переменную по имени done
, инициализируемую нулем. Прежде чем функция copyto
программного потока вернет управление, она установит эту переменную в 1. Основной программный поток проверит эту переменную, и если она равна нулю, выведет сообщение об ошибке. Поскольку значение переменной устанавливает только один программный поток, нет необходимости в синхронизации.
- Общественное мнение и этические вопросы в прямом маркетинге
- 8.3 Writing HTML
- Концепция «Путь Samsung» как основа конкурентоспособности корпорации
- Когда использовать невидимый Интернет
- Вычислимость в классической физике: где мы находимся?
- Создание содержимого уровня блока:
- Глава 18. Извлекайте уроки из всех своих разработок
- Управление значениями
- Расширение полномочий потребителей
- 24.4. Проблемы с установкой программ
- Шаг 2: Проведите логическую группировку для сравнения
- Ввод учетных данных пользователя