Проблеммы при чтении из сокета

eXtreme

Новичок
Проблеммы при чтении из сокета

PHP:
function _file_get_contents($url) {

    $url_parts = parse_url($url);
    if (isset($url_parts['query'])) { $url_query = '?'.$url_parts['query']; } else { $url_query = ''; }

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_connect($socket, $url_parts['host'], 80);

    $in  = "GET ".$url_parts['path']."$url_query HTTP/1.1\r\n";
    $in .= "Host: ".$url_parts['host']."\r\n";
    $in .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.02\r\n";
    $in .= "Connection: Close\r\n\r\n";

    socket_write($socket, $in, strlen($in));

    $data = ''; $out = '';

    while ($out = trim(socket_read($socket, 4096))) { $data .= $out; }

    socket_close($socket);

    return $data;
}

print _file_get_contents('http://www.domain.com/');
Таким кодом я получаю страничку с сервера. Проблемма вся в том, что после каждого блока данных вставляются непонятные символы. Что-то типа \n c00 \n. Что здесь не так? Откуда появляются эти лишние символы?
 

SiMM

Новичок
> Что здесь не так?
PHP:
$in  = "GET ".$url_parts['path']."$url_query HTTP/1.0\r\n";
 

eXtreme

Новичок
хм действительно. пилять пол ночи парился :) а не подскажете почему HTTP/1.1 приводило к такому эффекту?
 

SiMM

Новичок
> а не подскажете почему HTTP/1.1 приводило к такому эффекту?
Смотри chunked в отклике. Что это такое и с чем его едят - читать в спецификации протокола.
 
Сверху