Здравствуйте, INsideR, Вы писали:
INR>Как загрузить файл по FTP на C# не используя ASP.NET.
А причем тут ASP.NET? В текущих фреймворках, AFAIK, вообще нет классов для работы с FTP.
Могу в принципе подарить враппер над WinInet, который я сваял около 3-х лет назад на MC++. Только сразу предупреждаю, что код там написан в матером сишном стиле (не было для меня в ту пору такого понятия, как code standard , практически лишен комментариев и содержит как минимум один небольшой глюк в работе с таймаутами.
Использование этого дела выглядит примерно так:
Здравствуйте, Lexey, Вы писали:
L>Здравствуйте, INsideR, Вы писали:
INR>>Как загрузить файл по FTP на C# не используя ASP.NET.
L>А причем тут ASP.NET? В текущих фреймворках, AFAIK, вообще нет классов для работы с FTP. L>Могу в принципе подарить враппер над WinInet, который я сваял около 3-х лет назад на MC++. Только сразу предупреждаю, что код там написан в матером сишном стиле (не было для меня в ту пору такого понятия, как code standard , практически лишен комментариев и содержит как минимум один небольшой глюк в работе с таймаутами.
Спасибо, но вчера сам wrapper написал, теперь другая проблема, как подключаться к ftp через proxy?
Здравствуйте, INsideR, Вы писали:
INR>Спасибо, но вчера сам wrapper написал, теперь другая проблема, как подключаться к ftp через proxy?
Ну если это враппер над WinInet, то WinInet, AFAIR, позволяет конфигурировать прокси. Кроме того, он по дефолту использует те же настройки, что и IE.
... << RSDN@Home 1.1.4 beta 1 >>
"Будь достоин победы" (c) 8th Wizard's rule.
Re[4]: FTP и C#
От:
Аноним
Дата:
12.07.04 06:40
Оценка:
Здравствуйте, Lexey, Вы писали:
L>Ну если это враппер над WinInet, то WinInet, AFAIR, позволяет конфигурировать прокси. Кроме того, он по дефолту использует те же настройки, что и IE.
зачем писать класс-обертку если можно самому реализовать
простой FTP клиент на C#?!!!
Создаешь TCPClient на 21 порту:
TcpClient _tcpClient = new TcpClient(Host, 21);
Получаешь у него поток :
NetworkStream ns=_tcpClient.GetStream();
И дальше пишешь в поток (посылая FTP комманды) и
читаешь из потока ответ севера
Например для загрузки файла на сервер используется комманда "STOR"
Здравствуйте, <Аноним>, Вы писали:
А>зачем писать класс-обертку если можно самому реализовать А>простой FTP клиент на C#?!!!
Ну флаг тебе в руки, как говорится.
А>Создаешь TCPClient на 21 порту: А>TcpClient _tcpClient = new TcpClient(Host, 21);
А>Получаешь у него поток : А>NetworkStream ns=_tcpClient.GetStream();
А>И дальше пишешь в поток (посылая FTP комманды) и А>читаешь из потока ответ севера
А>Например для загрузки файла на сервер используется комманда "STOR"
А ты в курсе, что протокол FTP двухпортовый? Причем работает по разному в номальном и пассивном режиме? И что кроме STOR и GET еще иногда хочется уметь получать списко файлов в каталоге, менять текущий каталог, etc. И неплохо бы, чтобы оно через прокси работало и асинхронный режим поддерживало.
Подскажите как правильно принимать ответы на команды от FTP сервера.
Обычно это делают примерно так:
int bytes = 0;
do
{
try
{
bytes = sData.Receive(buffer, buffer.Length, 0);
}
data.Append(enc.GetString(buffer, 0, bytes));
}
while (bytes > 0);
Т.е. выход из цикла если bytes стало равно нулю, но видь это будет работать только с локальным сервером, т.к. в Инернете бывают задержки, вследствие которых из цикла будет происходить выход раньше чем надо.