Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

Одинаково ли работают разные 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
14-32962
Salmir
2002-03-04 04:13
2002.04.11
Помогите новичку


3-32642
Rustik
2002-03-19 15:41
2002.04.11
Вылетает ошибка


1-32894
DimaP
2002-03-29 18:14
2002.04.11
Цвета


3-32697
Евген
2002-03-19 07:57
2002.04.11
Работа с компонентом TUpdateSQL


7-33000
tormoz
2002-01-16 20:25
2002.04.11
Вопрос тем, кто работал с Shell ом