|
|
|
| Элементарное действие с fsockopen не выполняется: на нужный сервер не переходим.Вроде всё по науке. ПОсоветуйте, кто может, в чём дело. Вот скрипт:
$fp = fsockopen ("www.mail.ru", 80); | |
|
|
|
|
|
|
|
для: igor
(27.10.2004 в 18:01)
| | Работа с сокетами достаточно трудоёмкая штука :)
<?php
// Задаём порт
$service_port = 80;
// Возвращаем адрес хоста
$address = gethostbyname("www.mail.ru");
// Создаём сокет
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0)
{
echo "socket_create() завершилась неудачей: причина: " . socket_strerror($socket) . "\n";
}
// Соединяемся
$result = socket_connect($socket, $address, $service_port);
if ($result < 0)
{
echo "socket_connect() завершилась неудачей: причина: ($result) " . socket_strerror($result) . "\n";
}
// Формируем заголовок для получения
// данных методом GET
$in = "GET / HTTP/1.1\n";
$in .= "Host: www.mail.ru\r\n\r\n";
// Отправляем заголовок
socket_write($socket, $in, strlen($in));
// Читаем данные из сокета
while ($out = socket_read($socket, 2048))
{
echo $out;
}
// Закрываем сокет
socket_close($socket);
?>
|
| |
|
|
|
|
|
|
|
для: igor
(27.10.2004 в 18:01)
| | А используется fsockopen()... тогда скрипт должен выглядеть следующим образом:
<?php
$fp = fsockopen("www.mail.ru", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.mail.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
|
PS В любом случае мало открыть сокет, нужно ещё выполнить чёрную работу браузера - отослать запрос серверу. | |
|
|
|