Показать сообщение отдельно

Indy все-таки дерьмо?
  #1  
Старый 28.04.2010, 20:33
Xieon
Новичок
Регистрация: 18.08.2009
Сообщений: 18
С нами: 8805597

Репутация: 2
По умолчанию Indy все-таки дерьмо?

В общем, возникла задача слить с одного сайта большое количество файлов и перезалить в другое место. В качестве этого "другого места" был выбран Народ.Диск от яндекса (всякие айфолдеры и рапидшары по сравнению с ним - полное УГ, имхо). Файлов много, тысячи. Только не спрашивайте, зачем мне это Для затравки я написал скриптик на PHP+curl, ищущий, скачивающий и закачивающий файлы, он отлично работал, но скорость меня не устраивала, поэтому я переписал его на Delphi+Indy, процесс пошел гораздо веселее)

Через полдня все файлы, наконец, перекачались, я расслабился, думал даже попить кофе...и тут мне в голову пришла мысль сверить хэши md5 у оригинальных файлов и закачанных на Народ, благо можно их прочитать на страницах файла, и что оказалось? У каждого пятого моего файла на Народе хэш не совпал (ровно 20%). Проверил - архивы действительно битые...Буквально 10-20 байт разница, но битые. Пи**ец.

Народ - несмотря на свои преимущества, довольно криво работает и все же я не думаю, что настолько криво, что неправильно заливает файлы. И еще - я проверил, оказалось, что среди тех файлов, которые заливал PHP скрипт, ни одного битого нет. Судя по всему, проблема в Indy (IdHTTP). Да и я не раз слышал, что Indy, в котором и так багов куча, криво работает в потоках. Знающие люди, скажите, пожалуйста, это из-за него так?)

Если из-за него, то на что переписать прогу? TClientSocket из VCL? Wininet? Winsock?

P.S. Все HTTP-заголовки, отсылаемые прогой, совершенно идентичны тем, что отсылает браузер, проверено сниффером, так что дело не в них.

Последний раз редактировалось Xieon; 28.04.2010 в 20:36..
 
Ответить с цитированием