Автор Тема: Закачка файла через сокет  (Прочитано 3866 раз)

0 Пользователей и 1 Гость просматривают эту тему.

  • Гость
Закачка файла через сокет
« : 17 Июля 2002, 12:39:09 »
Такая вот проблемка возникла у меня:
По одному урлу нужно файл скачать через другой прокси (т.е. не через proxy.aaaa.aaa, a через proxy1.aaaa.aaa)
Организовано все так:
   $fp=fsockopen($ip, $port) or die(\'Can"t establish connection\');
   if ($fp){
    $query = "GET ".$file." HTTP/1.0\\r\\n\\r\\n";
    fputs($fp, $query);
    $i=0;
    while (!feof($fp)){
     $page[$i]=fgets($fp, 1000);
     $i++;
    }
    fclose($fp);
   }
Все замечательно скачало, но файл был "покоцанный",т.е. часть нужной информации отсутсвовала
Тогда перед всем этим добавил
         header ("HTTP_USER_AGENT: \'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)\'");
         header (\'REMOTE_ADDR: 000.00.000.000); //свой адр.
Содержимое файла было таким же
Но проверенно, что файл  через proxy даже без отправки заголовка возвращается целый
Плз. не проходите мимо

Оффлайн Redjin

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Закачка файла через сокет
« Ответ #1 : 17 Июля 2002, 14:02:40 »
Это мое сообщение

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Закачка файла через сокет
« Ответ #2 : 17 Июля 2002, 14:06:21 »
Не забывай, что кроме самого файла, ты еще читаешь и заголовки, которые выдает сервер.
После трех дней без программирования жизнь становится бессмысленной.

  • Гость
Закачка файла через сокет
« Ответ #3 : 17 Июля 2002, 14:51:23 »
(Сообщение Redjin)Да, конечно, но как это влияет?
Забыл пароль и теперь он не изменяется :(

Оффлайн Redjin

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Закачка файла через сокет
« Ответ #4 : 17 Июля 2002, 16:16:17 »
Заголовки получаемого файла никак не должны менять содержимое файла, или что ты имел ввиду?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Закачка файла через сокет
« Ответ #5 : 17 Июля 2002, 17:46:32 »
Файл бинарный? Тогда может fread() вместо fgets()
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Redjin

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Закачка файла через сокет
« Ответ #6 : 17 Июля 2002, 18:30:52 »
Нет он htm

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Закачка файла через сокет
« Ответ #7 : 17 Июля 2002, 19:37:11 »
во-первых заголовки типа header() никак не влияют (и не должны влиять) на покоцанность файла. Их нужно через fputs() посылать.
Во-вторых все же попробуй
while (!feof($fp)) {
    $str.= fread ($fp,128);
}
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Redjin

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Закачка файла через сокет
« Ответ #8 : 18 Июля 2002, 11:27:24 »
Цитировать
во-первых заголовки типа header() никак не влияют (и не должны влиять) на покоцанность файла. Их нужно через fputs() посылать.


Да, действительно с ними я облажался....:((((

Оффлайн Redjin

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Закачка файла через сокет
« Ответ #9 : 18 Июля 2002, 11:58:07 »
fread()  действительно помог
Дело оказалось в том, что передаваемый файл (как я понимаю) был сгенерирован, т.е. не там был конец строки
До этого я читал file() и проблем не было
Большое тебе спасибо :)
Все было элементарно

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28