Теперь вызывается функция ioctl () с использованием функционального кода siocgifaddr, ей передается сокет и вновь созданная структуры ifreq. Если вызов функции ioctl () по каким-то причинам завершается неудачей, возвращается значение undef.
В ином случае функция ioctl () вернет затребованную информацию в структуре ifreq. Переменная $ifreq распаковывается с использованием формата ifreq_addr. Она возвращает имя интерфейса, обозначение его семейства адресов и сам адрес. Все прочие значения игнорируются, а адрес с помощью функции inet_ntoa () преобразуется в форму с четырьмя чиcлами, разделенными точками, и возвращается вызывающей процедуре.
Строки 46-77. Выборка широковещательного адреса, адреса назначения, аппаратного адреса и маски сети. Следующие несколько функций весьма похожи друг на друга, но они не запрашивают у операционной системы адрес интерфейса, а используют различные функциональные коды ioctl () для выборки широковещательного адреса, адреса назначения двухточечного соединения, аппаратного адреса и маски сети.
В некоторых из этих процедур выполняется небольшая дополнительная работа в целях исключения возможности возврата адреса 0.0.0.0; автор обнаружил это в некоторых системам Linux, опрашивая интерфейсы, которые не поддерживают определенный тип адресации (например, пытаясь получить широковещательный адрес для интерфейса петли обратной связи). Лучше вернуть значение undef, если адрес отсутствует, чем бессмысленное значение.
Строки 78-84. Возврат флажков интерфейса. Функция if_flags() инициализирует структуру ifreq, включая в нее имя требуемого интерфейса, а затем передает функции ioctl ()
с помощью функционального кода siocgifflags. В случае успешного выполнения результа, распаковывается с использованием формата ifreq_flags и флажки возвращаются вызывающей процедуре.
Строки 85-100. Выборка списка всех интерфейсов. Самой сложной является функция if_list (), которая возвращает список всех активных сетевых интерфейсов.
2015-07-05 12:44:01
это интересно Каждый пользователь процессорных устройств рано или поздно сталкивался с играми. И с развитием планшетов и смартфонов, последнее время стали широко популярны игры мобильных приложений для Андроид. На сайте https://androidvip.net/games/ представлен богатый список игр разных направлений, установка которых не займет много времени.