Необязательный аргумент timeout установит время в секундах, которое PHP ожидает до установки соединения. По необходимости можно указать и доли секунд. Если требуется установить значение тайм-аута для операций чтения и записи, воспользуйтесь директивой stream_set_timeout. Можно также указать другие параметры подключения с помощью функций работы с потоками, описанными в главе 9, "Операционная система", например установку блокировки (листинг 10.3). Ключ pfsockopen добавляет устойчивое функционирование функции fsockopen.

Листинг 10.3. Функция fsockopen

<?php
//указать браузеру не преобразовывать header("Content-type: text/plain"); //попробовать подключиться к Web-серверу //тайм-аут после 6 0 секунд
$fp = fsockopen("www.leonatkinson.com", 80, $error_number, $error_description,
60); if($fp)
{
// установить режим блокировки stream_set_blocking($fp, FALSE);
// указать серверу, что нам нужен root- документ fputs($fp, "GET / HTTP/1.0rn");
fputs($fp, "rn"); while(!feof($fp))
{
//распечатать следующие 4 №айт print(fgets($fp, 4096));
}
//закрыть соединение fclose($fp); 
}
else
{
//$connect сделал ошибку print("Произошла ошибка!<BR>n"); print("Номер: $error_number<BR>n"); print("Описание: $error_description<BR>n");
}

string gethostbyaddr(string ip_address)
Функция gethostbyaddr (листинг 10.4) возвращает имя узла, заданного IP-адресом. Если имя узла невозможно определить по адресу, возвращается адрес.

Листинг 10.4. Функция gethostbyaddr

<?php
print(gethostbyaddr("216.218.178.111"));
?>

string gethostbyname(string hostname)
Функция gethostbyname (листинг 10.5) возвращает IP-адрес узла, заданного по имени. Возможно, что имени соответствует более одного IP-адреса. Для определения каждого из них, можно воспользоваться функцией gethostbynamel.

Листинг 10.5. Функция gethostbyname

<?php
print(gethostbyname("www.php.net"));
?>

array gethostbynamel(string hostname)
Функция gethostbynamel (листинг 10.6) возвращает перечень IP-адресов, которым соответствует данное имя.
getmxrr
Функция getmxrr является псевдонимом функции dns_get_mx.

| Листинг 10.6. Функция gethostbynamel_
<?php
foreach(gethostbynamel("www.microsoft.com") as $host)
{
print("$host<br>n");

integer getprotobyname(string name)
Функция getprotobyname возвращает код протокола.
string getprotobynumber(integer protocol)
Функция getprotobynumber (листинг 10.7) возвращает имя протокола по его коду.

| Листинг 10.7. Функции getprotobyname и getprotobynumber_
<?php
print("UDP - это протокол " . getprotobyname('udp') . "<br>n"); print("Протокол 6 - это " . getprotobynumber(6) . "<br>n");
?>

integer getservbyname(string service, string protocol)
Функция getservbyname (листинг 10.8) возвращает порт, используемый службой. Аргумент protocol должен иметь значение tcp или udp.

| Листинг 10.8. Функции getservbyname и getservbyport_
<?php
//проверить, какой порт использует протокол ftp
$port = getservbyname("ftp", "tcp");
print("FTP uses port $port<br>n");
//проверить, какая служба использует протокол 25
$service = getservbyport(25, "tcp");
print(" Порт 25 используется $service<br>n");
?>

string getservbyport(integer port, string protocol)
Функция getservbyport возвращает имя службы, использующей указанный порт. В аргументе protocol должно быть указано значение tcp или udp.