Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
4-33011
Yaro
2002-02-10 21:38
2002.04.11
Принудительное завершение работы программы, не имеющую окна или как получить Хэндл процесса


14-32944
IronHawk
2002-02-27 16:22
2002.04.11
Как программно определить, создана ли дочерняя форма ?


1-32832
mike.dld
2002-03-28 17:45
2002.04.11
Это опять Я!


1-32802
Chistyakov
2002-04-01 10:13
2002.04.11
Как недопустить повторного запуска программы?


3-32705
Fareader
2002-03-21 12:03
2002.04.11
Падает скорость Insert на больших объемах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский