Книга: UNIX: разработка сетевых приложений
Глава 28
Глава 28
28.1. Недоступными являются поле номера версии и поле следующего заголовка в IPv6. Поле полезной длины доступно либо как аргумент одной из функций вывода, либо как возвращаемое значений одной из функций ввода, но если требуется параметр увеличенного поля данных (jumbo payload option), сам параметр приложению недоступен. Заголовок фрагментации также недоступен приложению.
28.2. В конце концов приемный буфер клиентского сокета заполнится, и при этом функция демона write
будет заблокирована. Мы не хотим, чтобы это произошло, поскольку демон тогда перестанет обрабатывать данные на всех своих сокетах. Простейшим решением является следующее: демон должен сделать свой конец соединения домена Unix с клиентом неблокируемым. Для этого демон должен вызывать функцию write
вместо функции-обертки Write
и игнорировать ошибку EWOULDBLOCK
.
28.3. По умолчанию Беркли-ядра допускают широковещательную передачу через символьный сокет [128, с. 1057]. Поэтому параметр сокета SO_BROADCAST
необходимо определять только для UDP-сокетов.
28.4. Наша программа не проверяет адреса многоадресной передачи и не устанавливает параметр сокета IP_MULTICAST_IF
. Следовательно, ядро выбирает исходящий интерфейс, вероятно, просматривая таблицу маршрутизации для 224.0.0.1. Мы также не устанавливаем значение поля IP_MULTICAST_TTL
, поэтому по умолчанию оно равно 1, и это правильное значение.
- Общественное мнение и этические вопросы в прямом маркетинге
- 8.3 Writing HTML
- Концепция «Путь Samsung» как основа конкурентоспособности корпорации
- Когда использовать невидимый Интернет
- Вычислимость в классической физике: где мы находимся?
- Создание содержимого уровня блока:
- Глава 18. Извлекайте уроки из всех своих разработок
- Управление значениями
- Расширение полномочий потребителей
- 24.4. Проблемы с установкой программ
- Шаг 2: Проведите логическую группировку для сравнения
- Ввод учетных данных пользователя