Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Работа с FTP


Автор: YoD 13.1.2006, 19:07
Помогите, пожалуйста, разобраться.

Создаю FTP соединение, выгружаю файл на сервер. Делаю это примерно так:

Код

                FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(new Uri(host + UploadName));
                ftp.Credentials = new NetworkCredential(username, password);
                ftp.Method = WebRequestMethods.Ftp.UploadFile;
                byte[] data = GetFile(FileName);
                Stream s = ftp.GetRequestStream();
                s.Write(data, 0, data.Length);
                s.Close();


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

Как закрыть фтп-соединение?

Автор: Medved 13.1.2006, 21:59
http://www.codeproject.com/vb/net/FtpClient.asp
http://www.componentspace.com/ftp.net.aspx
http://www.rebex.net/ftp.net/

Автор: mr.DUDA 14.1.2006, 00:29
Пример из MSDN говорит, что после закрытия потока нужно ещё вызвать это:
Код
FtpWebResponse response = (FtpWebResponse) request.GetResponse();
response.Close();

Автор: YoD 14.1.2006, 16:16
Удалость разрешить проблему таким образом: ftp.KeepAlive = false. В этом случае соединение само обрывается, когда заканчивают выполняться все операции с ftp-протоколом.

Pegas и mr.DUDA спасибо за готовность помочь!

Автор: Wanderer2019 2.2.2006, 16:39
Подскажите plz...
Хотел попробовать данный класс...
но не могу найти GetFile. откуда он берется????
У меня Framework 2.0.

Автор: mr.DUDA 2.2.2006, 21:31
Походу, GetFile берётся из FtpWebResponse.
В ответе от фтп-сервера получаем по GetResponse объект FtpWebResponse, у него есть метод GetStream.
Получив поток, можно зафигячить его хоть в файл, хоть в MemoryStream, а там уже как фантазия подскажет smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)