} else {
$ipLong[$dotted] = Sret; $ipOotted[$ret] = Sdotted; " return $ret;
}
}
Этот метод выполняет обратную функцию в сравнении с ранее определенным методом dottedToIp(). Он преобразует 32-разрядный IP-адрес аргумента в формат с точками:
function ipToDotted($longIp)
{
if (!$longIp) {
log_err("Long IP address is required to get
dot formatted IP address"); return -1;
> elseif ($ret = $ipDotted[$longIp]) { return $ret;
} elseif ((Sret = long2ip($longlp)) == false) {
log_err("Dotted IP address could not be found for " . Slonglp); return -1;
} else {
$ipDotted[Slonglp] = $ret; $ipLong[$ret] = Slonglp; return $ret;
}
}
Следующий метод обнуляет массивы, в которых результаты за
проса:
function resetCache()
{
ShostName = 0;
SdomainName = 0;
SipAddress = 0;
SmailXchanger = 0;
SservPort = 0;
SservName = 0; $ipDotted = 0; lipLong = 0;
>
Наконец, имеется вспомогательный метод для регистрации ошибок:
function log_err($msg) {
echo($msg . "<br>");
}
}
Сокеты
Сокеты предоставляют средства для программного доступа к уровням протоколов. Однако не на всех платформах для доступа к уровню протоколов необходимы сокеты. В операционных системах, ведущих свое происхождение от System V, для доступа к уровням протоколов часто используется интерфейс транспортного уровня - Transport Library Interface (TLI).
Сама по себе спецификация протокола не устанавливает, какой конкретный интерфейс должен применяться для доступа к уровням протокола. С течением времени самым распространенным для этого способом стал интерфейс соке- тов. При программировании на таких языках, как С и C++, используются различные реализации сокетов, специфические для операционной системы. Платформы Microsoft Windows предоставляют для этой цели WinSock API; другим примером служит API сокетов BSD, имеющийся на большинстве систем UNIX, производных от BSD, и даже в некоторых системах System V. В Java также имеется интерфейс сокетов для доступа к сети. Следуя этим примерам, РНР тоже реализует API сокетов для интерфейса с уровнями протоколов.
Понятие сокетов предполагает функции, позволяющие взаимодействовать с сетевыми соединениями способом, весьма похожим на программирование доступа к файлам, в частности следовать семантике «открыть-читать-писать-закрыть». С помощью опций сокетов возможно осуществлять более сложное взаимодействие с уровнями протоколов (см. рис. 13.2).
Обычно написанные с применением библиотеки соке-