П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 176938 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74089 раз(а).

Учебник HTML.
Просмотров 73288 раз(а).

Руководство по PHP5.
Просмотров 44167 раз(а).

Хостинг через призму DNS.
Просмотров 50832 раз(а).

Подборка текстов стандартных документов.
Просмотров 44342 раз(а).

Учебник PHP - Самоучитель
Просмотров 50594 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51007 раз(а).

Внешние атаки...
Просмотров 41316 раз(а).

Учебник PHP.
Просмотров 36550 раз(а).

SSI в примерах.
Просмотров 27431 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




Глава 16: Доступ к системным базам данных.
16.3 Получение информации о сети

Perl поддерживает сетевое программирование средствами, которые хорошо знакомы тем, кто писал программы для сетевых приложений на С. По сути дела, большинство функций Perl, обеспечивающих доступ к сети, имеют и те же имена, что их С-коллеги, и похожие параметры. В этой главе мы не можем привести полную информацию по сетевому программированию, поэтому просто рассмотрим фрагмент сетевого приложения.

Один из параметров, который вам приходится часто определять,— это IP-адрес, соответствующий сетевому имени (или наоборот). В С вы преобразуете сетевое имя в сетевой адрес с помощью программы gethostbyname(3). Затем, используя полученный адрес, вы устанавливаете связь между своей программой и другой программой, которая работает где-то в другом месте.

В Perl функция, преобразующая хост-имя в адрес, имеет то же имя, что и С-программа, и похожие параметры. Выглядит она так:

($name, $aliases, $addrtype, $1ength, @addrs) = gethostbyname($name);
# основная форма функций gethostbyname

Параметр этой функций — имя хоста, например, slate.bedrock.com, а возвращаемое значение — список из четырех и более параметров (в зависимости от того, сколько адресов связано с данным именем). Если имя хоста недействительно, функция возвращает пустой список.

Когда gethostbyname вызывается в скалярном контексте, возвращается только первый адрес.

Если gethostbyname завершается успешно, то переменной $name в качестве значения присваивается каноническое имя, которое, если входное имя — псевдоним, отличается от входного имени. Значение переменной $aliases — это список разделенных пробелами имен, под которыми данный хост известен в сети. Переменная $addrtype содержит кодовое обозначение формата представлення адреса. Для имени slate.bedrock.com мы можем предположить, что это значение указывает на IP-адрес, обычно представляемый как четыре числа из диапазона от 1 до 256, разделенных точками. Переменная $1ength содержит количество адресов. Это лишняя информация, так как в любом случае можно посмотреть на размер массива @addrs.

Наиболее полезная часть возвращаемого значения — массив @addrs. Каждый элемент данного массива — это отдельный IP-адрес, представленный во внутреннем формате и обрабатываемый в Perl как четырехсимвольная строка*. эта четырехсимвольная строка представлена в формо, понятной для других сетевых Perl-функций. Однако предположим, что нам требуется вывести результат в виде, удобном для пользователя. В данном случае нам нужно с помощью функции unpack и еще нескольких операций преобра-зовать возвращаемое значение в удобочитаемый формат. Вот код, который обеспечивает вывод одного из ІР-адресов хоста slate.bedrock.com:

($addr) = (gethostbyname("slate.bedrock.com"))[4];
print "Slate's address is ";
join(".",unpack ("C4", $addr)), "\n";

Функция unpack получает четырехбайтовую строку и возвращает четыре числа. Оказывается, они стоят именно в том порядке, который нужен функции join для того, чтобы она вставила между каждой парой чисел точку и представила таким образом все это в удобочитаемой форме. Информация о простых программах-клиентах приведена в приложении В.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru