После того как вы узнаете о возможных затруднениях, они не будут составлять для вас значительных проблем.
Определение интерфейсов, обеспечивающих широковещательную рассылку, во время выполнения
Существует еще один способ выполнения широковещательной рассылки, если заранее не известен правильный адрес. Он состоит в определении широковещательного адреса конкретной подсети хоста во время выполнения. Если на хосте, к примеру, prvkontakte.ru - занимающимся раскруткой вк групп, установлено несколько плат Ethernet или есть другие сетевые интерфейсы, то таких адресов может быть несколько и приложение общего назначения должно попытаться их все обнаружить.
В основе этого процесса лежат простые принципы. Вначале операционной системе должен быть передан запрос на получение списка всех активных сетевых интерфейсов. Этот список будет включать не только те интерфейсы, которые обладают способностью выполнять широковещательную рассылку, такие как платы Ethernet, но и те, которые такими способностями не обладают, например интерфейсы петли обратной связи и двухточечные соединения, установленные через последовательные линии связи. Затем осуществляется выборка “флажков” интерфейса: двоичной маски атрибутов, которые описывают его свойства, включая то, способен ли он выполнять широковещательную рассылку. Эти флажки используются для отбора интерфейсов, позволяющих выполнять широковещательную рассылку, после чего у операционной системы запрашиваются широковещательные адреса выбранных интерфейсов. Список наиболее широко применяемых флажков приведен далее.
Рассмотрим этот процесс более подробно. Операционная система позволяет определять характеристики и управлять сетевыми интерфейсами с использованием ряда вызовов функции ioctl (). Первым параметром вызова ioctl () должен быть открытый сокет, а вторым — функциональный код, выбранный из списка.