upload файла на удаленный сервер через socket

<?php
/*
*Upload файла на удаленный сервер через socket
*автор: nc_soft
*28.08.07
*/

//генерация разделителя
$boundary = md5(time());

//отправляем файл (например example.jar )

//имя пересылаемого файла
$file_name = 'example.jar';

//MIME тип пересылаемого файла
$application = 'application/java-archive';

//запись в переменную
$bufer = file_get_contents('./example.jar');

$form_file_name = 'file1'; //это имя у поля формы <input type="file" name="******">

//формируем тело запроса
$post_str = '';
$post_str .= "--$boundary\r\n";
$post_str .= "Content-Disposition: form-data; name=\"$form_file_name\"; filename=\"$file_name\"\r\n";
$post_str .= "Content-Type: $application\r\n";
$post_str .= "Content-Transfer-Encoding: binary\r\n\r\n";
$post_str .= "$bufer\r\n";
$post_str .= "--$boundary--\r\n";


//сайт
$host = 'site.ru';

//обработчик формы
$path = 'handler.php';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $header  = "POST $path HTTP/1.0\r\n";
    $header .= "Host: $host\r\n";
    
    //указываем что это пост данные с вложенным файлом
    $header .= "Content-Type: multipart/form-data; boundary=$boundary\r\n";
    $header .= "Content-Length: ".strlen($post_str)."\r\n\r\n";

    //посылаем данные
    fwrite($fp, $header.$post_str);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>