
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.14.81] |
![]() |
|
Сообщ.
#1
,
|
|
|
Есть программа которая закачивает фаил на ФТП посредством WebClient!(мой выбор пал на WebClient потому, что он умеет работать с ФТП в асинхроном режиме что не маловажно, т.к. отпадает многострочность и сложность кода который наблюдается у Сокетов или WebRequest в асинхронных режимах или в потоках)!
И так, к делу.! Я отлавливаю ответ который посылает сервер. ![]() ![]() Private Sub webClient_UpLoadFileCompleted( _ ByVal sender As System.Object, _ ByVal e As System.Net.UploadFileCompletedEventArgs) _ Handles WebClient.UploadFileCompleted msgbox(e.Error.Message.ToString) ' это сообщение которое приходит от сервера в случае ошибки. errorAgent(e.Error.Message.ToString) ' sub End Sub В errorAgent я обрезаю получившийся результат(текст) до кода ошибки, в данном случае 530, В rfc я вычетал что такому коду ошибке соответствует "Неправельный Логин или Пароль", и в лист виев на нашем могучем пишу : "Неправельный Логин или Пароль" а коду 421 соответствует "Превышенно максимальное количество людей на сервере" Сама проблема!!! Когда начал тестить программу заметил, что выдается постояно "Неправельный Логин или Пароль" вместо "Превышенно максимальное количество людей на сервере" Начал уходить в глубь проблеммы и был удевлен! ![]() Что код при превышении максимал...... людей не 421 а 530 Просто у него окончание другое Вижу Цитата The remote server returned an error: (530) Sorry, max 41 users -- try again later ---- -- Уточню что это я вижу в DownloadMaster Но по идее толжен быть у 530 ошибки Цитата The remote server returned an error: (530) Non, logen in а у 421 Цитата The remote server returned an error: (421) Service not available, closing control connection. Все бы не чего, переделал код с 421 на 530, да вот мой WebClient не хочит видеть именно тот конец который на самом деле!!! ![]() Допустим происходит ошибка в логе пишется что: (530) Non, logen in --- (Моя программа) А на самом деле (530) Sorry, max 41 users -- try again later --- (DownLoadMaster) Почемуто не хочет WebClient выводить такое сообщение. Кто знает причину такого ответа! Добавлено Проблема перешла на новый уровень. Просто пока писал эксперементировал и заметил не маловажний факт!!! Запускаю FTP сервер у себя на компьютере (для теста) Запускаю командную строку, подключаюсь к фтп На ФТП заранее включено MaxUsers = 1 Запускаю свою программу наченаю закачку файлов В Логе сервера видно Цитата 421 Too many users are connected, please try again later А моя программа выдает! ![]() Цитата (421) Service not available, closing control connection. ![]() |
Сообщ.
#2
,
|
|
|
Насколько я понял. Тебе нужно, чтобы прога нормально подключалась к серверу и закачивала файл на него.
Ниже приведен код функции закачки (под 2й фрэймворк). Надеюсь, он будет тебе полезен. ![]() ![]() /// <summary> /// Функция для аплоада файла /// </summary> /// <param name="fileName">имя файла, который будем аплоадить</param> /// <param name="uploadUrl">урл аплоада</param> public void Upload(string fileName, string uploadUrl) { Stream requestStream = null; FileStream fileStream = null; FtpWebResponse uploadResponse = null; try { FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl); uploadRequest.UsePassive = Form1.FtpOption; //вбиваем кредентиалы uploadRequest.Credentials = new NetworkCredential(Form1.FtpUserName, Form1.FtpPassword); uploadRequest.Method = WebRequestMethods.Ftp.UploadFile; uploadRequest.Proxy = null; requestStream = uploadRequest.GetRequestStream(); fileStream = File.Open(fileName, FileMode.Open); byte[] buffer = new byte[1024]; int bytesRead; while (true) { bytesRead = fileStream.Read(buffer, 0, buffer.Length); if (bytesRead == 0) break; requestStream.Write(buffer, 0, bytesRead); } requestStream.Close(); uploadResponse = (FtpWebResponse)uploadRequest.GetResponse(); } catch { } finally { if (uploadResponse != null) uploadResponse.Close(); if (fileStream != null) fileStream.Close(); if (requestStream != null) requestStream.Close(); } } |