Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Вниз

работа с WinInet   Найти похожие ветки 

 
_Андрей   (2009-05-14 12:08) [0]

Добрый день, была такая задача, заделать небольшой ftp-клиент для выгрузки инфы на сервер, крайне желательно чтобы присутствовала возможность асинхронной работы, программка для одной машины, так что решил задействовать WinInet (как раз хотел поближе с этой библиотечкой познакомиться).

Всё было нормально до того как дошёл до реализации некоторых функций. Загвоздка вот в чём: для функций, например, FtpGetFile и FtpPutFile есть возможность указать некую переменную (dwContext) для последущей обработки возникающих событий.

А у функции FtpCreateDirectory, например, такого параметра нету вообще, при её вызове она всегда возвращает false а GetLastError = 997 ERROR_IO_PENDING (Перекрытая операция ввода-вывода) и фсё... как узнать о завршении операции - непонятно. Собственно это первое о чём хотел спросить.

Так и не поняв как работают эти функции решил воспользоваться FtpCommand, с ней проблем тоже - туева хуча:
 - описание в MSDN и прототип в WinInet не соответствуют
 - сама шлёт команды, например при посылке мной "MKD" она до кучи отсылает TYPE (это ещё куда ни шло), а затем PORT (это вообще непонятно, нафига открывать соединение данных если я пердачу файлов не запрашиваю)
 - достаточно странный способ получения ответов от сервера

Работа FtpCommand - это второй интересующий момент.

И ещё одна загвоздка, с вызовом InternetCloseHandle, понятно что в случае асинхронной работы она не может немедленно закрыть соединение, но при вызове этой функции я получаю только одно "событие" - INTERNET_STATUS_RECEIVING_RESPONSE, после этого приложение подвисает (возврата из InternetCloseHandle нет, никаких событий больше не генериться). Вот и хотел ещё спросить, можно ли заканчивать работу программки вообще без вызовов этой функции?

Буду очень признателен за помощь...

P.S. Все вопросы на форуме касающиеся WinInet я прочитал, здесь некоторые моменты повторяются, сделал так сознательно чтобы не было необходимости копаться в других темах.


 
Anatoly Podgoretsky ©   (2009-05-14 13:17) [1]

В ФТП протоколе создание папки узнается или попыткой входа в нее или перечитывание списка файлов и папок.


 
_Андрей   (2009-05-14 13:35) [2]

Вопрос не в этом, пускай я после вызова FtpCreateDirectory вызвал FtpSetCurrentDirectory, она мне тоже определённо ничего не скажет (в случае асинхронного вызова просто вернёт false и GetLastError = ERROR_IO_PENDING), то же самое что и FtpCreateDirectory


 
Anatoly Podgoretsky ©   (2009-05-14 14:07) [3]

> _Андрей  (14.05.2009 13:35:02)  [2]

В случае ассинхронного вызова большего узнать и нельзя, поскольку все остальное делается в обработчиках, сообственно об этом и говорит GetLastError.


 
_Андрей   (2009-05-14 14:22) [4]

Так почему тогда на FtpGetFile есть возможность навесить обработчик, а на FtpCreateDirectory нет, выходит ведь так?


 
Anatoly Podgoretsky ©   (2009-05-14 14:27) [5]

Ну и что, ну на FtpGetFile есть возможность навесить обработчик, а на FtpCreateDirectory нет.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
15-1240847736
Практик
2009-04-27 19:55
2009.06.28
Наука: Прикладной смысл


2-1241873934
Tany
2009-05-09 16:58
2009.06.28
TreeNode


3-1222688341
Kostafey
2008-09-29 15:39
2009.06.28
Помогите с SQL запросом поиска совпадений


9-1152026361
Frol
2006-07-04 19:19
2009.06.28
математический маятник


15-1240437869
NailMan
2009-04-23 02:04
2009.06.28
Процентные соотношения. Какие правила?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский