Форум: "Сети";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизОдинаково ли работают разные FTP-сервера? Найти похожие ветки
← →
perov (2002-01-25 10:44) [0]Дома написал ftp-клиента (ftp-сервер IIS). Программа работает на ура. Принес на работу (ftp broker)- и облом, программа работает, но файлы на сервер не закачивает. Анализирую протоколы сервера, выяснил, что вместо закачки файла клиент делает докачку, что возможно, если на сервере есть файл с таким именем. НО файла то нет!
В связи с этим стает вопрос: одинаково или нет фтп-сервера обрабатывают запрос фтп-клиента на получение списка файлов по определенному шаблону?
← →
Wonder (2002-01-25 11:00) [1]Реализация протокола FTP разным ПО должна соответствовать RFC в большей или меньшей степени. Одни и те же команды должны обрабатываться одинаково. Другое дело, что в данном конретном ПО может быть что-то не реализовано (не поддерживаться какие-нибудь команды FTP).
← →
nikkie (2002-01-25 11:39) [2]реализация протокола фтп-серверами действительно может различаться - кроме отсутствии поддержки некоторых комманд, о чем сказал Wonder, сервера могут возвращать разные коды в ответ на некоторые комманды.
но чтобы фтп-сервер говорил о наличии файла, когда его там нет - невозможно. скорее всего ошибка в твоем клиенте. создай на клиенте лог сессии и посмотри, что реально происходит.
← →
perov (2002-01-25 12:01) [3]я думаю, что если на сервере нет файлов по шаблону, то некоторые фтп-сервера могут возвращать в качестве результата "." и "..".
При попытки получить список файлов, которых нет на фтп-сервере IIS возникает исключительная ситуация, которую я обрабатываю.
А вот ситуацию, когда сервер может вернуть то, что я не просил, не предусмотрел :(
Вот и абстрагируйся после этого :)
← →
Wonder (2002-01-25 12:22) [4]Кстати, что это за "получение списка файлов по определенному шаблону"?
Насколько я помню, в RFC ничего подобного нет...
← →
perov (2002-01-25 12:47) [5]использую малость доработанную версию INDY компонента (реализовал докачку) TidFTP. У него есть метод List, который в TStringList возвращает список файлов по указанному шаблону.
← →
Wonder (2002-01-25 13:16) [6]Так в таком случае, все вопросы к компоненту. По протоколу FTP можно получить только список всех файлов в директории. Потом сам компонент из полученного списка выбирает файлы по шаблону.
← →
nikkie (2002-01-25 13:44) [7]>Wonder
ты инди не обижай :)
List метод просто LIST или NLST команду дает. а у этих комманд есть параметр. perov интерпретирует этот параметр как "шаблон". а уж как фтп-сервер к нему отнесется - вопрос.
RFC959:
NAME LIST (NLST)
This command causes a directory listing to be sent from
server to user site. The pathname should specify a
directory or other system-specific file group descriptor.
интерпретация file group descriptor как "шаблона" мне кажется логичной, но реализовано ли это во всех серверах... имхо, надежней просто список всех файлов запрашивать и в нем искать.
есть конечно еще вариант - давать команду GET, но обрывать data connection. только сложновато реализовать.
← →
Wonder (2002-01-25 13:52) [8]>nikkie
С Indy не знаком :)
file group descriptor - в привычном понимании это и есть директория.
Если бы имелся ввиду шаблон файла, то это уже был бы просто file descriptor или wildcard.
← →
perov (2002-01-25 15:57) [9]procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean);
Parameters
ADest: TStrings
List for files and directories in the current directory.
const ASpecifier: string = ""
File mask for the listing. Default value is "".
const ADetails: boolean = true
Include file details. Default value is True.
Description
List is a procedure used to request a list of files or directories in the current directory on the FTP server.
ADest is the TStringList used to store the information requested.
ASpecifier is a String that contains a mask indicating the files and/or directories to be included in the listing. ASpecifier can contain common wildcard characters like "*" and "?". Some useful masks include:
*.* - All files in the current directory.
* - All directory entries in the current directory.
*. - All files regardless of extension in the current directory.
A??.txt - All text files that have a 3-character name starting with "A".
Если я правильно понял, то в ASpecifier, могу задать имя файла, существование которого я хочу проверить на сервере.
Но как выяснилось, разные фтп-сервера по разному реагируют, если на сервере нет нужного файла
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c