Справка веб-мастера     Справочник web-мастера и программиста
  PHP       Интернет       Беб-дизайн       Безопасность       Javascript     Информеры     Game      
          Игра шарики





Работа с сокетами: fsockopen

Функцию fopen() можно использовать для открытия сетевых соединений с файлами на других хостах в Сети, но функция fopen() позволяла работать только с содержимым файла, переданного по протоколу HTTP.

Но по HTTP вместе с "телом" документа передаются посланные сервером заголовки, которые помогает получить функция fsockopen().

Синтаксис:
int fsockopen(string $host, int $port [,int &$errno] [,string &$errstr])

Эта функция работает аналогично fopen(), но только устанавливает сетевое соединение с указанным хостом $host и программой, закрепленной на нем за портом $port.

Она возвращает файловый дескриптор, с которым затем могут быть выполнены обычные операции: fread(), fwrite(), fgets(), feof(). В случае ошибки возвращается false и, если заданы параметры-переменные $errno и $errstr, в них записываются соответственно номер ошибки (не равный нулю) и текст сообщения об ошибке. Если функция вернула false, но $errno сбросилась в 0, то это означает, что произошла ошибка инициализации сокета (например, такое может произойти, если в Windows не установлен требуемый протокол TCP/IP).

Сценарий на PHP эмуляции браузера.

Посылаем в порт 80 удаленного хоста HTTP-запрос GET и получаем весь ответ вместе с заголовками.

<?
// Соединяемся с Web-сервером site.net
$fp = fsockopen("site.net", 80);
// Посылаем запрос главной страницы сервера
fputs($fp,"GET / HTTP/1.0\n\n");
// Теперь читаем по одной строке и выводим ответ
echo "<pre>";
while(!feof($fp))
echo HtmlSpecialChars(fgets($fp,1000));
echo "</pre>";
// Отключаемся от сервера
fclose($fp);
?>

Функция fsockopen() универсальна и может использоваться для подключения к FTP-порту и к telnet-порту.







  Copyright © King-dom.ru, 2008-2013       Разработка сайта SoftHolm.com