[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как работать с сокетами???
russian_hacker
люди никогда не приходилось иметь с ними дело и совсем запутался
вот функция
PHP
function socket_do($host, $headers)
{

    if (fsockopen($host, 80)) {

        $f= fsockopen($host, 80);
        fwrite($f, $headers);
        $flag    = false;
        $res     = "";
        $headers = "";

        while (!feof($f)) {
            $line                      = fgets($f);
            if (!$flag)      $headers .= $line;
            else if ($flag)  $res     .= $line;
             if(!trim($line)) $flag    = true;
         }
        fclose($f);

        $arr['headers'] =  $headers;
        $arr['file']    =  $res;
        $arr['flag']    =  $flag;
        return $arr;

    } else {

        echo error for open socket;
    }
}

и иногда при её использовании в $arr['headers'] попадает часть html страницы без heade'ров
почему???
З.Ы: Функцию нашел на этом форуме немного переделал!



Спустя 12 минут, 24 секунды (8.06.2009 - 10:26) vasa_c написал(а):
PHP
if (fsockopen($host80)) {
    
$ffsockopen($host80);

Что это?

Ваша задача состоит из двух:
1. Получить из сокета запрошенный документ
2. Разобрать его как вам нужно (вытащить $headers и т.п.)

Выполните 1 пункт для начала, выведите всё что получили на экран и подумайте как этом можно разобрать.

Спустя 44 минуты, 54 секунды (8.06.2009 - 11:11) russian_hacker написал(а):
получил я страницу...
впринцыпи можно и не разделять её на header'ы и страницу
просто взть функцию для поиска и вытаскивать то что нужно
а так правильно???
PHP
$f= fsockopen($host, 80, $errno, $errstr);

    if(!$errno){
        fwrite($f, $headers);
        $line     = "";
        while (!feof($f))
        {
            $line                      .= fgets($f);
        }
        fclose($f);
            return $line;
        } else {
            return  $errno.$errstr;
        }

Спустя 4 часа, 28 минут, 5 секунд (8.06.2009 - 15:39) vasa_c написал(а):
Цитата
а так правильно???

Работает, значит правильно, не работает - неправильно.

Смотря что у вас в $headers.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.