Код:
#######################
# Автор: red_byte
# Источник:http://darkcoders.net
#######################
Я надеюсь, ты уже знаешь, что такое сокеты, поэтому не будем терять времени на теорию, а приступим сразу к практике. Для наглядности рассмотрим самый банальный пример - получение HTTP-заголовков от сервера.
Код:
<?
$timeout = 25;
$host = "darkcoders.net";
$port = 80;
$page="index.php";
//Открываем сокет
$sock = fsockopen($host,$port,$errno,$errstr,$timeout);
if (!$sock)
{print "Невозможно открыть сокет
$errstr($errno)";}
//Формируем HTTP-запрос
fputs($sock,"GET http://darkcoders.net/$page HTTP/1.0\r\n\r\n");
//Читаем из сокета первые 200 байт
$header = fgets($sock,200);
fclose($sock);
//Сравниваем первые 15 байт обоих строк
if (strncmp($header,"HTTP/1.1 200 OK",15)==0)
//Если совпадают...
{
print "Страница существует";
} else
{
//Если не совпали, значит ошибка
print "Такой страницы нет
Header: ".$header;
}
?>
страницу, определенную в переменной $page. Далее мы сравниваем первые 15 строк с
эталоном, и если все совпадает, тогда страница существует.
Допустим, нам надо получить не только заголовки, но и весь код страницы.
Реализуется это так:
Код:
<?
//Открываем сокет
$sock = fsockopen("darkcoders.net", 80, $errno, $errstr, 30);
//Если ошибка, то выводим ее
if (!$sock)
{
echo "$errstr ($errno)
\n";
} else
{
//Делаем HTTP-запрос
fputs ($sock, "GET / HTTP/1.0\r\nHost: darkcoders.net\r\n\r\n");
//Пока не дойдем до конца,
while (!feof($sock))
{
//читаем блоками по 200 байт и выводим их
echo fgets ($sock,200);
}
//Закрываем сокет
fclose ($sock);
}
?>
(При копировании статьи обязательно указывать источник)