Книга: UNIX: разработка сетевых приложений
Упражнения
Упражнения
1. Скомпилируйте программу, показанную в листинге 20.5, и запустите ее, задав в командной строке IP-адрес 224.0.0.1. Что произойдет?
2. Измените программу из предыдущего примера, чтобы связать IP-адрес 224.0.0.1 и порт 0 с сокетом. Запустите ее. Разрешается ли вам связывать адрес многоадресной передачи с сокетом при помощи функции bind
? Если у вас есть такая программа, как tcpdump
, понаблюдайте за пакетами в сети. Каков IP-адрес отправителя посылаемой вами дейтаграммы?
3. Один из способов определить, какие узлы в вашей подсети имеют возможность многоадресной передачи, заключается в запуске утилиты ping
для группы всех узлов, то есть для адреса 224.0.0.1. Попробуйте это сделать.
4. Одним из способов обнаружения маршрутизаторов многоадресной передачи в вашей подсети является запуск утилиты ping для группы всех маршрутизаторов — 224.0.0.2. Попробуйте это сделать.
5. Один из способов узнать, соединен ли ваш узел с многоадресной IP-инфраструктурой — запустить нашу программу из раздела 21.9, подождать несколько минут и посмотреть, появляются ли анонсы сеанса. Попробуйте сделать это и посмотрите, получите ли вы какие-нибудь анонсы.
6. Выполните вычисления в листинге 21.12 при условии, что дробная часть отметки времени NTP равна 1 073 741 824 (одна четвертая от 232).
Выполните еще раз эти же вычисления для максимально возможной дробной части (232 - 1).
Измените реализацию функции mcast_set_if
для IPv4 так, чтобы запоминать имя каждого интерфейса, для которого она получает IP-адрес. Это позволит избежать нового вызова функции ioctl
для данного интерфейса.
- 21.1. Введение
- 21.2. Адрес многоадресной передачи
- 21.3. Сравнение многоадресной и широковещательной передачи в локальной сети
- 21.4. Многоадресная передача в глобальной сети
- 21.5. Многоадресная передача от отправителя
- 21.6. Параметры сокетов многоадресной передачи
- 21.7. Функция mcast_join и родственные функции
- 21.8 Функция dg_cli, использующая многоадресную передачу
- 21.9. Получение анонсов сеансов многоадресной передачи
- 21.10. Отправка и получение
- 21.11. SNTP: простой синхронизирующий сетевой протокол
- 21.12. Резюме
- Упражнения