Просмотр полной версии : WinInet.. поиск файлов на FTP
необходимо организовать поиск файлов на ФТП сервере (по всем вложенным папкам). есть функции FtpFindFirstFile InternetFindNextFile. проблемма слежующая:
с одного коннекта можно создать только один хендл поиска.. но при рекурсивном поиске, при каждом углублении в директорию необходимо начинать новай поиск. так что, создавать новый коннект??? или есть другой способ поиска файлов?
дизасмил аналогичные проги. в их импорте вининет вообще отсутствует.
выкладываю сорцы проги для поиска файлов на ФТП. работает через винирет. создаёт кучу коннектов. мне это очень не нравится. хочу услышать ваше мнение. кому не лень - буду благодарен.
сканирует FAR сервер. об оптимизации не заботился.
http://file.raid.ru/get.php?f=8ec1101f71bf421a1c630d0c5a2ffc47
*NoNamE*
14.03.2007, 20:02
Причём тут реверсинг ?
извини, более подходищего раздела я не увидел.
с одного коннекта можно создать только один хендл поиска.. но при рекурсивном поиске, при каждом углублении в директорию необходимо начинать новай поиск.Тебе нужно объединить эти функции в одну, FtpFindAllFiles, в которой будут образовываться 2 листа. В первом листе будут файлы, а во втором директории. Т.е. эта функция после заполнения буффера закроет handle поиска, и при обработке листа с директориями ты сново сможешь вызвать эту функцию. Единственная проблема, что при рекурсивном поиске, тебе прийдётся хранить все эти листы в памяти, но учитуя что это ftp, а не файловая система, это не будет большой особой проблемой.
Added:
дизасмил аналогичные проги. в их импорте вининет вообще отсутствует.Если бы я писал прогу, я бы этой либой тоже не пользовался, не такой уж и сложный протокол, всего несколько комманд и ИМХО гораздо проще создать сокет и общятся с сервером на прямую, и код будет более портабильный. ;)
hidden
пасиб. я с тобой согласен. но проблемма в том, что это бот.... а это прежде всего ограничение на размер кода. то есть вручную организовывать ФТП клиент, мне кажется, большая роскошь для него.
если работать со списком директорий - как ты предлагаешь, то действительно ВинИнет тут на*** не нужен, т.к. комманда ls выдаёт все файлы внутри директории и работать через сокеты тут даже проще, чем через вининет.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot