Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: функция fsockopen
 
 автор: igor   (27.10.2004 в 18:01)   письмо автору
 
 

Элементарное действие с fsockopen не выполняется: на нужный сервер не переходим.Вроде всё по науке. ПОсоветуйте, кто может, в чём дело. Вот скрипт:

$fp = fsockopen ("www.mail.ru", 80);

   
 
 автор: cheops   (27.10.2004 в 18:25)   письмо автору
 
   для: igor   (27.10.2004 в 18:01)
 

Работа с сокетами достаточно трудоёмкая штука :)
<?php
  
// Задаём порт
  
$service_port 80;
  
// Возвращаем адрес хоста
  
$address gethostbyname("www.mail.ru");

  
// Создаём сокет
  
$socket socket_create(AF_INETSOCK_STREAMSOL_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$instrlen($in));

  
// Читаем данные из сокета
  
while ($out socket_read($socket2048))
  {
    echo 
$out;
  }

  
// Закрываем сокет
  
socket_close($socket);
?>

   
 
 автор: cheops   (27.10.2004 в 18:30)   письмо автору
 
   для: igor   (27.10.2004 в 18:01)
 

А используется fsockopen()... тогда скрипт должен выглядеть следующим образом:
<?php
  $fp 
fsockopen("www.mail.ru"80$errno$errstr30);
  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($fp128);
    }
    
fclose($fp);
  }
?>


PS В любом случае мало открыть сокет, нужно ещё выполнить чёрную работу браузера - отослать запрос серверу.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования