Розробка FTP-server для ОС Windows

Характеристика предметної області: FTP-server для ОС Windows. Шляхи встановлення FTP-серверу в ОС Windows. Опис мови та середовища програмування, компонентів та функцій програми. Аналіз реалізованої програми FTP-клієнта. Тестовий запуск та опис програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 22.06.2017
Размер файла 1,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Тернопільський національний економічний університет

Факультет комп'ютерних інформаційних технологій

Кафедра інформаційно-обчислювальних систем і управління

Курсовий проект

з дисципліни «Комп'ютерні мережі»

на тему:

«Розробка FTP-server для ОС Windows»

Студента ІІІ курсу КН-32 групи

напряму підготовки «Комп'ютерні науки»

Моружка Андрія Валентиновича

Керівник: к.т.н., доцент Комар М.П.

м. Тернопіль - 2017 рік

Зміст

Вступ

1.Характеристика предметної області: FTP-server для ОС Windows

1.1 Аналіз задачі FTP-server

1.2 Аналіз існуючого програмного забезпечення FTP для ОС Windows

1.3 Шляхи встановлення FTP-серверу в ОС Windows

1.4 Постановка задачі

2. Розробка FTP клієнта для ОС Windows

2.1 Опис мови та середовища програмування

2.2 Опис компонентів програми

2.3 Опис функцій програми

3. Аналіз реалізованої програми FTP-клієнта

3.1 Тестовий запуск та опис програми

Висновки

Список використаної літератури

Додаток А. Лістинг класу FtpClient

Додаток Б. Лістинг головного модуля

Вступ

При розгляді FTP як сервісу Інтернет мають на увазі не просто протокол, а саме сервіс -- доступ до файлів, які знаходяться у файлових архівах.

FTP[1] -- стандартна програма, яка працює за протоколом TCP, яка завжди поставляється з операційною системою. Її початкове призначення -- передача файлів між різними комп'ютерами, які працюють у мережах TCP/IP: на одному з комп'ютерів працює програма-сервер, на іншому -- програма-клієнт, запущена користувачем, яка з'єднується з сервером і передає або отримує файли через FTP-сервіс. Все це розглядається з припущенням, що користувач зареєстрований на сервері та використовує логін та пароль на цьому комп'ютері.

Ця риса послужила причиною того, що програми FTP стали частиною окремого сервісу Інтернету. Справа в тому, що доволі часто сервер FTP налаштовується таким чином, що з'єднатися з ним можна не тільки під своїм ім'ям, але й під умовним іменем аnonymous -- анонім. У такому випадку для користувача стає доступною не вся файлова система комп'ютера, а лише деякий набір файлів на сервері, які складають вміст серверу аnonymous FTP -- публічного файлового архіву. Отже, якщо користувач хоче надати у вільне користування файли з інформацією, програмами і т. і., то йому достатньо організувати на власному комп'ютері, включеному в Інтернет, сервер аnonymous FTP. Створення такого серверу -- процес доволі простий, програми-клієнти FTP вельми розповсюджені, -- тому сьогодні публічні файлові архіви організовані в основному як сервери аnonymous FTP. Перелік інформації, яка міститься на таких серверах, включає всі аспекти життя: від звичайних текстів до мультимедіа.

Не зважаючи на розповсюдженість, у FTP є багато недоліків. Програми-клієнти FTP не завжди зручні і прості у користуванні. Користувач не завжди може зрозуміти який файл перед ним, чи той що необхідно, чи ні.

Мета курсової роботи: Дослідити роботу FTP-серверу, розробити власний додаток FTP.

Предмет дослідження: засоби та методи розробки FTP сервера для операційної системи Windows.

Об'єкт дослідження: програмні продукти, що дозволяють створити FTP server на операційній системі Windows.

1. Характеристика предметної області: FTP-server для ОС Windows

1.1 Аналіз задачі FTP-server

FTP -- сервіс прямого доступу, який вимагає повноцінного підключення до Інтернету, але є можливість доступу і через електронну пошту -- існують сервери, які пересилають за допомогою електронної пошти файли з будь-яких серверів аnonymous File Trаnsfer Protocol. Проте цей шлях отримання інформації -- досить незручний, оскільки такі сервери можуть бути сильно завантажені і запит доволі довго чекатиме своєї черги. Крім того, великі файли при пересилці діляться сервером на частини обмеженого обсягу і, якщо одна з частин загубиться і буде пересланою із пошкодженнями, то весь файл стане непридатним.

Перша реалізація протоколу (1971 р.) передбачала обмін між клієнтом і сервером повідомленнями, що складаються з заголовка (72 біт) і даних змінної довжини. Тема повідомлення включала в себе запит до FTP-сервера або відповідь від нього, тип і довжину переданих даних. Як дані передавалися параметри запиту (наприклад, шлях і ім'я файлу), інформація від сервера (наприклад, список файлів у каталозі) і самі файли. Таким чином, команди і дані передавалися по одному і тому ж каналу. У 1972 р. протокол був повністю змінений, і прийняв вигляд, близький до сучасного. Команди з параметрами від клієнта та відповіді сервера передаються по TELNET-з'єднання (канал управління), для передачі даних створюється окреме з'єднання (канал даних). У наступних редакціях була додана можливість роботи в пасивному режимі, передачі файлів між FTP-серверами, введені команди отримання інформації, зміни поточного каталогу, створення і видалення каталогів, збереження файлів під унікальним ім'ям. Деякий час існували команди для передачі електронної пошти через File Trаnsfer Protocol, проте згодом вони були виключені з протоколу. У 1980 р. FTP-протокол став використовувати TCP. Остання редакція протоколу була випущена в 1985 р. У 1997 р. з'явилося доповнення до протоколу, що дозволяє шифрувати і підписувати інформацію в каналі управління і каналі даних. У 1999 р. випущено додаток, присвячене інтернаціоналізації протоколу, яке рекомендує використовувати кодування UTF-8 для команд і відповідей сервера і визначає нову команду LАNG, що встановлює мову відповідей.

File Trаnsfer Protocol служба побудована за добре відомою схемою «клієнт-сервер». Схема FTP показана на рисунку 1.1.1

Рис.1.1.1 Схема взаємодії клієнта та сервера по FTP протоколу

сервер програма windows мова

Під час взаємодії між клієнтом та сервером виконуються наступні операції:

· Клієнт (браузер, Windows Commаnder, NetVаmpir …) посилає запити серверу і приймає файли.

· Сервер FTP (vsftpd, IIS …) опрацьовує запити клієнта на отримання файла.

· Взаємодія клієнт і сервера за протоколом FTP.

Служба FTP базується на двох стандартах:

· URL (Universаl Resource Locаtor) -- універсальний спосіб адресації ресурсів у мережі;

· File Trаnsfer Protocol -- протокол передачі файлів.

File Trаnsfer Protocol -- протокол передачі файлів, протокол високого рівня (а саме, рівня додатків).

Використовується службою FTP для передачі файлів.

Перший стандарт -- RFC114 (File Trаnsfer Protocol АK Bhushаn Аpr-10-1971).

Остання версія -- RFC959 (File Trаnsfer Protocol J. Postel, JK Reynolds Oct-01-1985).

FTP відрізняється від інших програм тим, що він використовує два TCP з'єднання для передачі файлу. Керуюче з'єднання -- з'єднання для посилки команд серверу й одержання відповідей від нього.

Для каналу керування використовується протокол Telnet.

З'єднання даних -- з'єднання для передачі файлів.

1 Керуюче з'єднання -- з'єднання для посилки команд серверу й одержання відповідей від нього. Для каналу керування використовується протокол Telnet.

2 З'єднання даних -- з'єднання для передачі файлів

В старих версіях для передачі даних використовувався тільки 20-й порт (активний режим), у сучасних версіях FTP-серверів порт для каналу даних може призначатися сервером з нестандартних (N> 1024) портів (пасивний режим).

Протокол FTP визначає запит-відповідь спосіб взаємодії між програмою-клієнтом і програмою-сервером.

Робота FTP на рівні користувача містить кілька етапів:

1.Ідентифікація клієнта

2.Вибір каталогу розміщення файлів.

3.Визначення режиму обміну (блоково, потоковий, ASCII або двійковий).

4.Виконання команд обміну (get, mget, dir, mdel, mput або put).

5.Завершення процедури (quit або close).

FTP має два режими з'єднання для обміну файлами, це:

1. Активний режим

Дії сервера і клієнта:

1.Клієнт встановлює зв'язок і надсилає запит на 21 порт сервера з порту N (N> 1024)

2.Сервер посилає відповідь на порт N (N> 1024) клієнта

3.Сервер встановлює зв'язок для передачі даних по порту 20 на порт клієнта N +1

Схематично даний режим показано на рис.1.1.2.

Рис.1.1.2. Схема активного режиму роботи FTP

2. Пасивний режим

Дії сервера і клієнта:

1.Клієнт встановлює зв'язок і надсилає запит (повідомляє, що треба працювати в пасивному режимі) на 21 порт сервера з порту N (N> 1024)

2.Сервер посилає відповідь і повідомляє номер порту для каналу даних P (P> 1024) на порт N (N> 1024) клієнта

3.Клієнт встановлює зв'язок для передачі даних по порту N +1 на порт сервера P (P> 1024)

Схема роботи пасивного режиму показано на рис.1.3.

Рис.1.1.3. Пасивний режим роботи FTP

Активний FTP вигідний для FTP-сервера, але шкідливий для сторони клієнта. FTP сервер намагається з'єднатися з випадковими високими (за номером) портами на клієнті, таке з'єднання напевно буде блоковано брандмауером на стороні клієнта.

Пасивний FTP вигідний для клієнта, але шкідливий для FTP-сервера. Клієнт буде робити обидва з'єднання до сервера, але один з них буде до випадкового високому порту, таке з'єднання напевно буде блоковано брандмауером на стороні сервера.[1]

1.2 Аналіз існуючого програмного забезпечення FTP для ОС Windows

FTP (File Transfer Protocol) -- протокол, призначений для передачі файлів в комп'ютерних мережах. FTP дозволяє підключатися до серверів FTP, переглядати вміст каталогів і завантажувати файли з сервера або на сервер. FTP-клієнт -- програма для спрощення доступу до FTP серверу. У залежності від призначення може надавати користувачеві простий доступ до віддаленого FTP-сервера в режимі текстової консолі або відображати файли на віддаленому сервері так ніби вони є частиною файлової системи комп'ютера користувача.[2]

Розглянемо основні FTP - програми для ОС Windows:

FileZilla [3] -- найкращий серед безкоштовних FTP-менеджерів (програма для викачування і завантаження файлів на FTP сервер) для операційної системи Windows. Є підтримка функції Drag and Drop, забезпечується докачка файлів (якщо сервер це підтримує). На рисунку 1.2.1. зображено вікно даного FTP сервера

Рис.1.2.1.Вікно FileZilla

Основні можливості:

· підтримує FTP, FTP під SSL/TLS (FTPS) і SSH File Transfer Protocol (SFTP);

· робота в декілька потіків;

· захист з'єднання (SSL);

· відновлення з'єднання (Keep Alive);

· визначення таймауту FTP-сервера;

· багатомовний інтерфейс FileZilla (зокрема російський);

· потужний менеджер сайтів і черги передачі файлів;

· настройка лімітів швидкості; фільтр імен файлів;

· помічник настройки конфігурації мережі;

· аутентифікація і шифровка за допомогою Kerberos

Wing FTP Server[4] (див. рис. 1.2.2)

Рис.1.2.2.Вікно Wing FTP Server

Wing FTP Server -- професійний FTP-сервер, що характеризується високою швидкістю, надійністю роботи і зручністю для користувачів. Він має приємний інтерфейс і зручне керування аккаунтом. Увімкнений монітор реального часу дозволяє перевірити навантаження на ваші сервера або навіть спостерігати за кожним користувачем, підключеним до сервера.

Wing FTP Server надає користувачам всю необхідну інформацію про сервер і файлах, що передаються, а також володіє великою кількістю налаштувань і можливостями зі зміни інтерфейсу програми.

Основні можливості WING FTP SERVER:

-- Підтримка протоколів FTP, FTPS (FTP під SSL), HTTP, HTTPS і SFTP.

-- Використання криптографічного модуля OpenSSL FIPS 140-2.

-- Адміністрування в веб-інтерфейсі.

-- Можливість використання безлічі серверів на одному IP.

-- Підтримка IPv6.

-- Підтримка Screen Reader для веб-клієнта.

-- Планувальник завдань.

-- Програмований менеджер подій.

-- Безліч типів аутентифікації.

Golden FTP Server [5] (див рис. 1.2.3)

Рис. 1.2.3. Вікно Golden FTP Server

Golden FTP Server -- персональний FTP сервер для Windows. Програма максимально проста і зручна у використанні з інтуїтивно зрозумілим багатомовним інтерфейсом. Golden FTP Server запускається автоматично при завантаженні Windows. Вам не потрібно яких-небудь особливих знань для використання програми. Файли додаються до списку загальних аналогічно стандартній дії «Відкрити файл» в Windows або просто з контестного меню. Ввімкнена підтримка декількох закачувань одночасно, а також відновлення завантаження після обриву зв'язку.

Основні можливості Golden FTP сервер: простий у використанні, багатомовний інтерфейс, вбудовується в контекстне меню Провідника, моніторинг активності користувача, інтелектуальний контроль за загальними ресурсами. Golden FTP Server має дві версії -- платну, і безкоштовну для особистого користування.

TurboFTP[6] (див рис. 1.2.4)

Рис. 1.2.4. Вікно TurboFTP

TurboFTP -- надійний FTP клієнт з підтримкою FTP над SSL/TLS і SFTP над SSH2 та широкими функціональними можливостями. Він дозволяє проводити передачу даних з вашого комп'ютера на сервер і навпаки з незвичайною легкістю і надійним шифруванням. Програма має інтуїтивно зрозумілий і зручний інтерфейс.

За допомогою TurboFTP ви можете завантажувати файли сайтів на сервер, синхронізувати файли і виконувати корпоративні трансфери критичної важливості. Серед плюсів програми можна відзначити синхронізацію директорій парою кліків, стеження за буфером обміну, здатність передавати великі файли, підтримка SOCKS 4 і SOCKS 5, планувальник завдань і т. д.

Основні можливості TURBOFTP:

-- Модуль Sync Service для планування завдань синхронізації.

-- Автоматичне завантаження нових файлів на сервер.

-- Передача файлів захищена за допомогою SSL і TLS. Підтримує SFTP над SSH2 і шифрування паролів OTP S/Key.

-- Вбудований планувальник дозволяє планувати завдання з передачі файлів і автоматичної синхронізації.

-- Надсилання заздалегідь підготованого повідомлення на e-mail після виконання завдань.

-- Синхронізація папок на комп'ютері і на сервері із створенням резервних копій файлів і папок

-- Стиснення файлів «на льоту» з використанням MODE-Z. Можливість створення і розпаковування архівів Zip, GZip і Tar.

-- Підтримка серверів Firewall/Proxy, включно з HTTP Proxy, SOCKS 4/4a.

-- TurboFTP здатний працювати з файлами з розміром більшим ніж 2 Gb в файловій системі FAT32 і більше 4 Gb в NTFS.

1.3 Шляхи встановлення FTP-серверу в ОС Windows

FTP - сервер - це підключений до інтернету, зазвичай постійно, комп'ютер, на якому встановлена спеціальна програма, що забезпечує доступ до файлів і тек цього комп'ютера по протоколу FTP.

Одним з найбільш поширених типів FTP - серверів є сервери загального, практично вільного, доступу. Такі сервери називаються анонімними(anonymous). При підключенні до анонімного сервера, як правило, логін і пароль вводити не вимагається. У ряді випадків, щоб підключитися до анонімного сервера вам доведеться ввести логін anonymous і довільний пароль. Слід зазначити, що навіть на анонімному сервері ви отримаєте доступ не до усіх його файлів і тек, а тільки до спеціальної, відведеної для цілей вільного доступу, теці.

Адреси(URL) FTP - серверів відрізняються від адрес HTTP - серверів і мають вигляд типу ftp ://ftp.ім'я_сервера.com.

Зрозуміло, FTP - сервер може знаходитися у будь-якій зоні, не лише .com, але і, скажімо, .ru або .org.

Наприклад: ftp://ftp.microsoft.com.

Протокол FTP і FTP - сервери виникли на зорі інтернету, тому зараз FTP - сервери - це величезне сховище інформації. З'явився навіть термін - FTP - архіви. На FTP- архівах зберігаються величезні колекції всіляких файлів : програм, текстів, зображень, звукових файлів і тому подібне

Отримати доступ до файлів на FTP - сервері можна з допомогою:

· браузеру, наприклад Internet Explorer;

· download- менеджера;

· FTP - клієнта для роботи в командному рядку(входить до складу Windows);

· за допомогою спеціалізованих програм, які називаються FTP - клієнтами(наприклад, FileZilla, SmartFTP)

Для того, щоб обмінюватись файлами за допомогою FTP протоколу також потрібно виділити комп'ютер? на якому буде розгорнутий FTP-server. ОС Windows дозволяє стандартними засобами розгорнути FTP-сервер на будь-якому комп'ютері. Для цього потрібно просто виконати ряд команд для налаштування і запуску FTP. Для розгортання FTP необхідно виконати наступні кроки:

1. Добавляємо компоненти ftp в середовище операційної системи. Для цього виконуємо команди: Панель керування - Програми - Програми та компоненти - Увімкнення та вимкнення засобів Windows. В відкритому меню встановлюємо компонент Internet Information Services та всі підкомпоненти (див. рис. 1.3.1).

Рис.1.3.1. Увімкнення компонентів FTP

2. Тепер необхідно запустити сервер. Для цього в Панелі керування вибираємо вкладку Адміністрування, а в ній Internet Information Services (IIS) Manager. Перед нами з'явиться вікно де в правій частині ми вибираємо вкладку sites і викликаємо контекстне меню (див. рис. 1.3.2)

Рис.1.3.2. Менеджер IIS

3. В контекстному меню вибираємо пункт Add FTP Site. В новому вікні задаємо ім'я нашого FTP - сервера та шлях до місця на фізичному диску, який буде виступати в ролі сховища для файлів створеного FTP. (див. рис. 1.3.3)

Рис.1.3.3. Вікно введення відомостей про FTP

4. Далі визначаємо параметри запуску FTP-сервера (див. рис. 1.3.4)

Рис.1.3.4. Вікно визначення параметрів запуску FTP

5. Далі в Брандмаувері Windows потрібно включити два вхідних правила: FTP Server (FTP Traffic-In) та FTP Server Passive (див. рис. 1.3.5)

Рис.1.3.5. Включення правил вхідного трафіку FTP

6. Також в Брандмаувері включаємо правило для вихідного трафіку FTP (див. рис. 1.3.6)

Рис.1.3.6. Включення правил вихідного трафіку FTP

7. Далі необхідно створити нову групу локальних користувачів і створити користувачів, які входитимуть в цю групу і які зможуть підключатися до FTP сервера зі встановленими правами доступу.

8. Після створення групи в правилах аутентифікації задаємо права показані на рисунку 1.3.7

Рис.1.3.7. Вікно встановлення правил авторизації на FTP сервері

9. Також задамо правила авторизації для анонімних користувачів, так як показано на рисунку 1.3.8.

Рис.1.3.8. Вікно задання правил авторизації для анонімних клієнтів

На цьому налаштування FTP-сервера засобами ОС Windows завершено і ми можемо, за допомогою FTP-клієнта, підключитися до сервера FTP. Таким чином ми можемо розгорнути власний FTP-сервер стандартними засобами операційної системи Windows.

1.4 Постановка задачі

Головною задачею роботи є дослідження FTP-server операційної системи Windows. Для набуття практичних навичок в даній предметній області необхідно розробити додаток для ОС Windows, який дозволив би використовувати протокол FTP. Тому необхідно розробити програм, яка дозволяла під'єднуватись до FTP сервера створено в середовищі вказаної операційної системи. Додаток виступатиме в ролі FTP-клієнта і повинен виконувати основні команди спрямовані до сервера, зокрема:

1. Підключення до FTP сервера

2. Відображення файлів розміщених на сервері

3. Навігація по директоріям

4. Збереження файлів на комп'ютері, де запущена програма

5. Завантаження файлів на сервер

6. Видалення файлів з серверу

7. Видалення директорій із серверу

8. Створення директорій на сервері

Програма повинна виконувати всі поставлені цілі, при цьому вона повинна мати простий та зрозумілий інтерфейс, споживати мало ресурсів персонального комп'ютера та повинна запобігати виникнення помилок, за рахунок попередження неправильних дій користувача.

2. Розробка FTP клієнта для ОС Windows

2.1 Опис мови та середовища програмування

Для розробки програмного забезпечення FTP-клієнта для ОС Windows було вибрано мову програмування С# та середовище програмування Microsoft Visual Studio 2017. Така комбінація дозволяє просто і швидко писати програми для даної операційної системи, оскільки вони максимально направлені на windows розробку. Опишемо загальні відомості про мову програмування та середовище розробки.

C#[7]-- об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи .NET. Розроблена Андерсом Гейлсбергом, Скотом Вілтамутом та Пітером Гольде під егідою Microsoft Research (при фірмі Microsoft).

Синтаксис C# близький до С++ і Java. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши багато що від своїх попередників -- мов С++, Delphi, Модула і Smalltalk -- С#, спираючись на практику їхнього використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем, наприклад множинне спадкування класів (на відміну від C++).

Титульним компілятором C# є Microsoft Visual C#.

Microsoft Visual Studio[8]-- серія продуктів фірми Майкрософт, які включають інтегроване середовище розробки програмного забезпечення та ряд інших інструментальних засобів. Ці продукти дозволяють розробляти як консольні програми, так і програми з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб-сайти, веб-застосунки, веб-служби як в рідному, так і в керованому кодах для всіх платформ, що підтримуються Microsoft Windows, Windows Mobile, Windows Phone, Windows CE, .NET Framework, .NET Compact Framework та Microsoft Silverlight.

2.2 Опис компонентів програми

При написанні FTP клієнта доцільно розділити програмний модуль на дві частини: функціонал, що буде відсилати запити на сервер і отримувати та обробляти відповіді та функціонал, що реалізовуватиме графічну оболонку FTP-клієнта.

Оскільки сам функціонал ftp-клієнта ділиться на дві частини - графічну оболонку і функціонал для взаємодії з сервером ftp, то краще виділити даний функціонал в окремий клас.

Крім того, створимо окремий клас для парсинга одержуваної відповіді від ftp-сервера. Основна частина роботи програми буде вестися за допомогою класів FtpWebRequest і FtpWebResponse.

FtpWebRequest - компонент (клас) мови С#, який дозволяє відправляти запити до FTP-сервера. Щоб отримати примірник FtpWebRequest, використовують Create метод. Можна також використовувати WebClient клас для відправки і завантаження відомостей з FTP-сервера. За допомогою цих підходів, при вказівці мережевого ресурсу, який використовує схему FTP (наприклад, "ftp://contoso.com") FtpWebRequest надає можливість програмно взаємодіяти з FTP-серверами.

URL може бути відносним або абсолютним. Якщо URL має вигляд "ftp://contoso.com/path", то URL є абсолютним, і поточний каталог є / path.

Для з'єднання з FTP-сервером необхідно мати ім'я користувача і пароль до сервера або дозволити на сервері анонімний вхід. Можна вказати облікові дані, які використовуються для підключення до сервера, задавши Credentials властивості або включити їх в UserInfo частина URI, який передається Create метод.

FtpWebResponse - компонент мови С#, який використовується для повернення відповіді FTP-сервера на відправлений до нього запит.

Екземпляр класу FtpWebResponse отримують шляхом виклику GetResponse методу. Поа=вернутий об'єкт повинен бути приведений до FtpWebResponse. Якщо програма не має FtpWebResponse викличить метод Close для звільнення ресурсів, що зберігаються в FtpWebResponse.

StatusCode містить код стану, повернутий сервером і StatusDescription властивість повертає код стану та повідомлення, яке описує стан. Значення, повернуті цим властивостем перетворюються в повідомлення, що повертається сервером.

Будь-які дані можуть бути повернуті в результаті запиту, наприклад: список імен файлів, що повертаються для ListDirectory запиту; список імен файлів доступних в потоці, повертаються GetResponseStream методом. Довжина потоку даних може бути отримана з властивості ContentLength.

2.3 Опис функцій програми

Основною задачею розроблюваної програми є під'єднання до FTP сервера та відправлення запитів до нього. Основні команди, які відправляються на сервер наведені в таблиці 2.3.1

Таблиця 2.3.1

Команда

Опис

RETR

ім'я файлу (взяти файл)

STOR

ім'я файлу (передати файл)

REST

маркер (для докачки вже частково скаченного файлу, зазвичай вказується зсув у байтах)

DELE

ім'я файлу, що видаляється

RMD ім'я

видаляється директорія

MKD ім'я

Створюється директорія

PWD

у відповіді вказати ім'я поточної директорії

LIST [ім'я директорії або файлу]

передати по з'єднанню даних список імен файлів в директорії або інформацію про фото

SYST

відповідь повинна містити тип ОС сервера і ін корисну інформацію

STAT

відповідь містить інформацію про поточний стан сервера; якщо команда видана в процесі передачі файлу і передуватиме посилкою сигналів telnet_а_IP і Synch, то відповідь д. містити інформацію про стан пересилання

STAT ім'я файлу

відповідь повинна містити інформацію про фото

HELP [ім'я команди]

опис роботи даної команди

NOOP

порожня команда

В нашій програмі реалізовані наступні команди:

1. Отримання списку файлів та директорій на сервері

2. Скачування файлів

3. Завантаження файлів на сервер

4. Видалення файлів та директорій

5. Створення директорії

Опишемо дані функції:

1. Функція ListDirectory призначена для отримання списку директорій та файлів розміщених на FTP сервері. Код даної функції наведено нижче:

public FileStruct[] ListDirectory(string path)

{

if (path == null || path == "")

{

path = "/";

}

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

//команда LIST

ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

ftpRequest.EnableSsl = _UseSSL;

//Получаємо вхідний потік

ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

//зміна для збереження отриманої інформації

string content = "";

StreamReader sr = new StreamReader(ftpResponse.GetResponseStream(), System.Text.Encoding.ASCII);

content = sr.ReadToEnd();

sr.Close();

ftpResponse.Close();

DirectoryListParser parser = new DirectoryListParser(content);

return parser.FullListing;

Функція отримує параментром шлях на FTP, створює з'єднання з ним, виконує команду LIST та з отриманих даних утворює структуру даних про файли та директорії на сервері

2. Функція DownloadFile виконує завантаження вибраного файлу із сервера

//метод протокола FTP RETR для завантаження файла с FTP-сервера

public void DownloadFile(string path, string fileName)

{

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path + "/" + fileName);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

//команда RETR

ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;

ftpRequest.EnableSsl = _UseSSL;

//Файли зберігатимуться в каталог програми

FileStream downloadedFile = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);

ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

//Получаємо вхідний потік

Stream responseStream = ftpResponse.GetResponseStream();

//Буфер для зчитуваних даних

byte[] buffer = new byte[1024];

int size = 0;

while ((size = responseStream.Read(buffer, 0, 1024)) > 0)

{

downloadedFile.Write(buffer, 0, size);

}

ftpResponse.Close();

downloadedFile.Close();

responseStream.Close();

}

Дана функція в параметрах отримує шлях та ім'я файлу на сервері, виконує підключення до FTP, виконує команду RETR.

3. Функція UploadFile завантажує вказаний файл на сервер

//метод протокола FTP STOR для загрузки файла на FTP-сервер

public void UploadFile(string path, string fileName)

{

//змінна для імені файла

string shortName = fileName.Remove(0, fileName.LastIndexOf("\\" ) + 1);

FileStream uploadedFile = new FileStream(fileName, FileMode.Open, FileAccess.Read);

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path + shortName);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;

//Буфер для завантажуваних данных

byte[] file_to_bytes = new byte[uploadedFile.Length];

//Зчитуємо дані в буфер

uploadedFile.Read(file_to_bytes, 0, file_to_bytes.Length);

uploadedFile.Close();

//Поток для загрузки файла

Stream writer = ftpRequest.GetRequestStream();

writer.Write(file_to_bytes, 0, file_to_bytes.Length);

writer.Close();

}

Функція в параметрах отримує шлях та ім'я файлу на локальному комп'ютері, виконує підключення до FTP, виконує команду STOR.

4. Функція DeleteFile видаляє вказаний файл із сервера

//метод протокола FTP DELE для видалення файла с FTP-сервера

public void DeleteFile(string path)

{

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;

FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

ftpResponse.Close();

}

Функція отримує в параметрах шлях до файлу та виконує команду до FTP-сервера - DELE

5. Функція CreateDirectory створює нову директорію на FTP-сервері

//метод протокола FTP MKD для створення каталога на FTP-сервері

public void CreateDirectory(string path, string folderName)

{

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path + folderName);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;

FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

ftpResponse.Close();

}

Ця функція отримує параметром шлях та ім'я нової директорії та створює нову папку на FTP-сервері.

Повні лістинги програми наведені в Додатку А та Б.

3. Аналіз реалізованої програми FTP-клієнта

3.1 Тестовий запуск та опис програми

Розроблювальний нами програмний продукт призначений для підключення до FTP сервера та відправки основних команд. Програма виступає в ролі FTP клієнта і виконує ряд функцій:

- Відображення файлів та директорій на сервері

- Навігація по директоріям

- Скачування, видалення та завантаження файлів

- Видалення та створення директорій

Програма запускається за допомогою файлу FtpClient.exe і не потребує встановлення, достатньо просто перемістити програму на комп'ютер та запустити.

Запустивши програми ми побачимо головне вікно де зверху ми повинні ввести в текстові поля потрібні параметри для підключення до FTP, зокрема: адресу FTP-сервера, ім'я користувача (login) та пароль. Головне вікно програми показано на рисунку 3.1.1

Рис.3.1.1 Головне вікно програми

В нашому випадку ми підключимося до FTP-серверу анонімно, тому вводити логін та пароль не потрібно, достатньо вказати лише адресу FTP. При такому Підключені доступ до серверу буде обмежений.

Після підключення ми отримаємо список файлів розміщених на сервері (див. рис. 3.1.1)

Рис.3.1.2. Відображення файлів на FTP

Тепер ми можемо виконувати основні операції описані вище. Дані операції доступні з контекстного меню, яке викликається натисненням на праву клавішу миші. Контекстне меню зображено на рисунку 3.1.3

Рис.3.1.3 Контекстне меню

Як видно з рисунку, ми можемо зберегти файл із серверу на наш комп'ютер. Для цього виділяємо потрібний файл і виконуємо команду Зберегти файл. Файл автоматично збережеться в поточну директорію. Після успішного збереження покажеться сповіщення про успішне виконання операції (див. рис. 3.1.4)

Рис.3.1.4. Сповіщення про успішне виконання операції

Програма дозволяє уникати помилок за рахунок попередження неправильних дій користувача. Для прикладу, якщо користувача викличе команду Зберегти файл, попередньо не виділивши потрібний файл, з'явиться сповіщення, що потрібно виділити файл. Дане сповіщення показано на рисунку 3.1.5

Рис.3.1.5 Сповіщення про некоректні дії

Висновки

В ході виконання курсового проекту з дисципліни «Комп'ютерні мережі» було досліджено роботу FTP сервера в середовищі операційної системи Windows, розроблено та протестовано додаток FTP-клієнта для даної ОС, який дозволяє виконувати наступні оперції: під'єднуватись до FTP-сервера; переглядати списки файлів та директорій сервера, створювати нові директорії на сервері, зберігати файли із FTP на власний комп'ютер, завантажувати файли на FTP та видаляти файли із сервера. Курсовий проект складався із трьох частин.

Перша частина - аналіз предметної області, де було досліджено теоретичні відомості про принципи функціонування FTP протоколу, FTP-серверів та принципи взаємодії між FTP сервером та FTP клієнтом.

Друга частина курсової роботи грунтувалась на власній розробці програмного забезпечення по предметній області. В результаті було розроблено windows-додаток FTP-клієнта.

Третя частина полягала в описі результатів роботи розробленого програмного забезпечення. В даній частині роботі було описано програму FTP клієнта та проведено її тестовий запуск і перевірка на працездатність.

Курсовий проект дозволив закріпити теоретичні знання по вибраній предметній області - «Розробка FTP-servers для ОС Windows».

Список використаної літератури

1. FTP [Електронний ресурс] - Режим доступу: https://uk.wikipediа.org/wiki/FTP

2. Програми для роботи з FTP [Електронний ресурс] - Режим доступу: http://programy.com.ua/ua/ftp/

3. FileZilla -- бесплатный FTP клиент [Електронний ресурс] - Режим доступу: http://filezilla.ru/

4. Wing FTP Server [Електронний ресурс] - Режим доступу: http://programy.com.ua/ua/Wing_FTP_Server/

5. Golden FTP Server [Електронний ресурс] - Режим доступу: http://programy.com.ua/ua/Golden_FTP_Server/

6. TurboFTP [Електронний ресурс] - Режим доступу: http://programy.com.ua/ua/TurboFTP/

7. C Sharp [Електронний ресурс] - Режим доступу: https://uk.wikipedia.org/wiki/C_Sharp

8. Microsoft Visual Studio [Електронний ресурс] - Режим доступу: https://uk.wikipedia.org/wiki/Microsoft_Visual_Studio

Додаток А. Лістинг класу FtpClient

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

using System.IO;

using System.Text.RegularExpressions;

namespace FTP_client

{

class FtpClient

{

private string _Host;//ім'я FTP

private string _UserName;//логін

private string _Password;//пароль

FtpWebRequest ftpRequest;//об'єкт для запитів

FtpWebResponse ftpResponse;//об'єкт для відповідей сервера

private bool _UseSSL = false;

public string Host

{

get

{

return _Host;

}

set

{

_Host = value;

}

}

public string UserName

{

get

{

return _UserName;

}

set

{

_UserName = value;

}

}

public string Password

{

get

{

return _Password;

}

set

{

_Password = value;

}

}

public bool UseSSL

{

get

{

return _UseSSL;

}

set

{

_UseSSL = value;

}

}

//Команда LIST для отримання списка файлів на FTP-сервері

public FileStruct[] ListDirectory(string path)

{

if (path == null || path == "")

{

path = "/";

}

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

//команда LIST

ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

ftpRequest.EnableSsl = _UseSSL;

//Получаємо вхідний потік

ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

//зміна для збереження отриманої інформації

string content = "";

StreamReader sr = new StreamReader(ftpResponse.GetResponseStream(), System.Text.Encoding.ASCII);

content = sr.ReadToEnd();

sr.Close();

ftpResponse.Close();

DirectoryListParser parser = new DirectoryListParser(content);

return parser.FullListing;

}

//метод протокола FTP RETR для завантаження файла с FTP-сервера

public void DownloadFile(string path, string fileName)

{

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path + "/" + fileName);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

//команда RETR

ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;

ftpRequest.EnableSsl = _UseSSL;

//Файли зберігатимуться в каталог програми

FileStream downloadedFile = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);

ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

//Получаємо вхідний потік

Stream responseStream = ftpResponse.GetResponseStream();

//Буфер для зчитуваних даних

byte[] buffer = new byte[1024];

int size = 0;

while ((size = responseStream.Read(buffer, 0, 1024)) > 0)

{

downloadedFile.Write(buffer, 0, size);

}

ftpResponse.Close();

downloadedFile.Close();

responseStream.Close();

}

//метод протокола FTP STOR для загрузки файла на FTP-сервер

public void UploadFile(string path, string fileName)

{

//змінна для імені файла

string shortName = fileName.Remove(0, fileName.LastIndexOf("\\" ) + 1);

FileStream uploadedFile = new FileStream(fileName, FileMode.Open, FileAccess.Read);

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path + shortName);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;

//Буфер для завантажуваних данных

byte[] file_to_bytes = new byte[uploadedFile.Length];

//Зчитуємо дані в буфер

uploadedFile.Read(file_to_bytes, 0, file_to_bytes.Length);

uploadedFile.Close();

//Поток для загрузки файла

Stream writer = ftpRequest.GetRequestStream();

writer.Write(file_to_bytes, 0, file_to_bytes.Length);

writer.Close();

}

//метод протокола FTP DELE для видалення файла с FTP-сервера

public void DeleteFile(string path)

{

ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;

FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

ftpResponse.Close();

}

//метод протокола FTP MKD для створення каталога на FTP-сервері

public void CreateDirectory(string path, string folderName)

{

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path + folderName);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;

FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

ftpResponse.Close();

}

//метод протокола FTP RMD для видалення каталога с FTP-сервера

public void RemoveDirectory(string path)

{

string filename = path;

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://" + _Host + path);

ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);

ftpRequest.EnableSsl = _UseSSL;

ftpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;

FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

ftpResponse.Close();

}

}

//Структура для збереження інформації про фали

public struct FileStruct

{

public string Flags;

public string Owner;

public bool IsDirectory;

public string CreateTime;

public string Name;

}

public enum FileListStyle

{

UnixStyle,

WindowsStyle,

Unknown

}

//Клас для парсингу

public class DirectoryListParser

{

private List<FileStruct> _myListArray;

public FileStruct[] FullListing

{

get

{

return _myListArray.ToArray();

}

}

public FileStruct[] FileList

{

get

{

List<FileStruct> _fileList = new List<FileStruct>();

foreach (FileStruct thisstruct in _myListArray)

{

if (!thisstruct.IsDirectory)

{

_fileList.Add(thisstruct);

}

}

return _fileList.ToArray();

}

}

public FileStruct[] DirectoryList

{

get

{

List<FileStruct> _dirList = new List<FileStruct>();

foreach (FileStruct thisstruct in _myListArray)

{

if (thisstruct.IsDirectory)

{

_dirList.Add(thisstruct);

}

}

return _dirList.ToArray();

}

}

public DirectoryListParser(string responseString)

{

_myListArray = GetList(responseString);

}

private List<FileStruct> GetList(string datastring)

{

List<FileStruct> myListArray = new List<FileStruct>();

string[] dataRecords = datastring.Split('\n');

//Отримуємо стиль запису на сервері

FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);

foreach (string s in dataRecords)

{

if (_directoryListStyle != FileListStyle.Unknown && s != "")

{

FileStruct f = new FileStruct();

f.Name = "..";

switch (_directoryListStyle)

{

case FileListStyle.UnixStyle:

f = ParseFileStructFromUnixStyleRecord(s);

break;

case FileListStyle.WindowsStyle:

f = ParseFileStructFromWindowsStyleRecord(s);

break;

}

if (f.Name != "" && f.Name != "." && f.Name != "..")

{

myListArray.Add(f);

}

}

}

return myListArray;

}

//Парсинг, якщо фтп сервер працює на Windows

private FileStruct ParseFileStructFromWindowsStyleRecord(string Record)

{

//Якщо стиль 02-03-04 07:46PM <DIR> Append

FileStruct f = new FileStruct();

string processstr = Record.Trim();

//Отримуємо дату

string dateStr = processstr.Substring(0, 8);

processstr = (processstr.Substring(8, processstr.Length - 8)).Trim();

//Отримуємо час

string timeStr = processstr.Substring(0, 7);

processstr = (processstr.Substring(7, processstr.Length - 7)).Trim();

f.CreateTime = dateStr + " " + timeStr;

//Перевіряємо чи папка

if (processstr.Substring(0, 5) == "<DIR>")

{

f.IsDirectory = true;

processstr = (processstr.Substring(5, processstr.Length - 5)).Trim();

}

else

{

string[] strs = processstr.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

processstr = strs[1];

f.IsDirectory = false;

}

//Решта стрічки ц імя каталога/файла

f.Name = processstr;

return f;

}

//Отримуємо, на якій ОС працює сервер

public FileListStyle GuessFileListStyle(string[] recordList)

{

foreach (string s in recordList)

{

//Якщо умова виконується, то використовуємо стиль Unix

if (s.Length > 10

&& Regex.IsMatch(s.Substring(0, 10), "(-|d)((-|r)(-|w)(-|x)){3}"))

{

return FileListStyle.UnixStyle;

}

//Інакшше стиль Windows

else if (s.Length > 8

&& Regex.IsMatch(s.Substring(0, 8), "[0-9]{2}-[0-9]{2}-[0-9]{2}"))

{

return FileListStyle.WindowsStyle;

}

}

return FileListStyle.Unknown;

}

//Якщо сервер працює на nix-ах

private FileStruct ParseFileStructFromUnixStyleRecord(string record)

{

//Запис має формат: dr-xr-xr-x 1 owner group 0 Nov 25 2002 bussys

FileStruct f = new FileStruct();

if (record[0] == '-' || record[0] == 'd')

{// правильний запис файла

string processstr = record.Trim();

f.Flags = processstr.Substring(0, 9);

f.IsDirectory = (f.Flags[0] == 'd');

processstr = (processstr.Substring(11)).Trim();

//відрізаємо непотрібну частину імені файлу

_cutSubstringFromStringWithTrim(ref processstr, ' ', 0);

f.Owner = _cutSubstringFromStringWithTrim(ref processstr, ' ', 0);

f.CreateTime = getCreateTimeString(record);

//Індекс початку назви файлу

int fileNameIndex = record.IndexOf(f.CreateTime) + f.CreateTime.Length;

//Імя файла

f.Name = record.Substring(fileNameIndex).Trim();

}

else

{

f.Name = "";

}

return f;

}

private string getCreateTimeString(string record)

{

//Отримуємо час

string month = "(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)";

string space = @"(\040)+";

string day = "([0-9]|[1-3][0-9])";

string year = "[1-2][0-9]{3}";

string time = "[0-9]{1,2}:[0-9]{2}";

Regex dateTimeRegex = new Regex(month + space + day + space + "(" + year + "|" + time + ")", RegexOptions.IgnoreCase);

Match match = dateTimeRegex.Match(record);

return match.Value;

}

private string _cutSubstringFromStringWithTrim(ref string s, char c, int startIndex)

{

int pos1 = s.IndexOf(c, startIndex);

string retString = s.Substring(0, pos1);

s = (s.Substring(pos1)).Trim();

return retString;

}

}

}

Додаток Б. Лістинг головного модуля

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Net;

using System.Text;

using System.Windows.Forms;

using System.Net.Sockets;

using System.IO;

//Пространство имен программы

using FTP_client;

namespace FTP_client

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

FtpClient ftp = new FtpClient();

string serverDir = "";

private void Form1_Load(object sender, EventArgs e)

{

ContextMenuStrip menu = new ContextMenuStrip();

menu.Items.Add("Зберегти файл");

menu.Items[0].Click += new EventHandler(Download_File);

menu.Items.Add("Завантажити файл на сервер");

menu.Items[1].Click += new EventHandler(Upload_File);

menu.Items.Add("Видалити каталог");

menu.Items[2].Click += new EventHandler(Remove_Directory);

menu.Items.Add("Видалити файл");

menu.Items[3].Click += new EventHandler(Delete_File);

listView2.ContextMenuStrip = menu;

}

//Подключение к фтп-серверу

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text == null)

{

MessageBox.Show("Ім'я сервера не може бути порожнім");

return;

}

ftp.Host = textBox1.Text;

ftp.UserName = textBox2.Text;

ftp.Password = textBox3.Text;

FileStruct[] FileList = ftp.ListDirectory("");

try

{

this.Text = "Підключення до ftp-серверу...";

foreach (FileStruct s in FileList)

{

ListViewItem lvi = new ListViewItem();

lvi.Text = s.Name;

lvi.SubItems.Add(s.CreateTime);

listView2.Items.Add(lvi);

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

this.Text = "FTP клієнт";

}

//Отримання файлів в виділеній папці

private void listView2_MouseDoubleClick(object sender, MouseEventArgs e)

{

if (listView2.SelectedItems[0] == null)

{

MessageBox.Show("Виділіть папку для перегляту");

}

try

{

this.Text = "Підключення до ftp-серверу..";

string directory = listView2.SelectedItems[0].SubItems[0].Text.Trim();

listView2.Items.Clear();

FileStruct[] FileList = ftp.ListDirectory("/" + directory);

this.Text = "Підключення до ftp-серверу..";

foreach (FileStruct s in FileList)

{

ListViewItem lvi = new ListViewItem();

lvi.Text = s.Name;

lvi.SubItems.Add(s.CreateTime);

listView2.Items.Add(lvi);

}

textBox1.Text += ("/" + directory);

serverDir += ("/" + directory);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

this.Text = "FTP клієнт";

}

private void Delete_File(object sender, EventArgs e)

{

if (listView2.SelectedItems[0] == null)

{

MessageBox.Show("Виділіть файл для видалення");

}

try

{

string directory = listView2.SelectedItems[0].SubItems[0].Text.Trim();

ftp.DeleteFile(serverDir + "/" + directory);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

private void Remove_Directory(object sender, EventArgs e)

{

if (listView2.SelectedItems[0] == null)

{

MessageBox.Show("Виділіть файл для видалення");

}

try

{

string directory = listView2.SelectedItems[0].SubItems[0].Text.Trim();

ftp.RemoveDirectory(serverDir + "/" + directory);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

private void Download_File(object sender, EventArgs e)

{

if (listView2.SelectedItems[0] == null)

{

MessageBox.Show("Видільть файл для завантаження");

}

try

{

string directory = listView2.SelectedItems[0].SubItems[0].Text.Trim();

ftp.DownloadFile(serverDir, directory);

MessageBox.Show("Файл завантажено в кореневий каталог");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

private void Upload_File(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog() == DialogResult.Cancel) return;

string file = openFileDialog1.FileName;

try

{

ftp.UploadFile(serverDir, file);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Постановка задачі: створення списку співробітників інституту. Аналіз мов програмування та вибір мови PascalABC.Net - 32-розрядної програми, яка може працювати на сучасних версіях Windows. Опис функцій та процедур, реалізації інтерфейсу користувача.

    курсовая работа [277,8 K], добавлен 25.06.2015

  • Семейство ОС Windows 2000. Windows 2000 Server. Windows 2000 Advanced Server. Windows 2000 Datacenter Server. ОС Windows Server 2003. Организация сети на основе Windows 2000. Службы каталогов, DHCP, DNS, WINS. Конфигурирование сервера.

    курсовая работа [307,1 K], добавлен 06.10.2006

  • Загальна характеристика алгоритму та опис програми. Керівництво системного програміста. Особливості запуску програми в Linux, FreeBSD, Windows. Аналіз результатів тестування програми, що проектується, вивчення та оцінка її практичної ефективності.

    курсовая работа [91,4 K], добавлен 13.06.2014

  • Проектування бази даних (БД). Проектування логічної моделі БД. Реалізація БД та створення таблиць. Встановлення зв’язків, вибір мови та середовища програмування. Опис функціональних елементів та реалізація програми. Опис та тестовий приклад програми.

    дипломная работа [1,6 M], добавлен 07.01.2017

  • Общая характеристика Microsoft Windows Server 2008: особенности, гибкость, защита, контроль. Усовершенствования операционной системы: Server Core, службы терминалов, Windows PowerShell, самовосстанавливающаяся NTFS, Server Manager, улучшение надежности.

    реферат [452,3 K], добавлен 15.12.2009

  • Призначення ігрової програми "Змійка" для розвитку уваги та логічного мислення гравців. Розробка програми в середовищі C++ Builder 6, її функціонування в ОС Windows. Опис алгоритму та основних функцій програми. Основні переваги та недоліки мови С++.

    реферат [1,7 M], добавлен 17.12.2014

  • Технічне обґрунтування та етапи розроблення програми на мові С для OS Windows, яка виводить у вікно запропонованої таблиці інформацію при натисненні клавіш клавіатури. Проблеми систем програмування. Резервування додаткової пам’яті в структурi класу вiкна.

    лабораторная работа [15,5 K], добавлен 04.04.2011

  • Аналіз предметної області і постановка задачі на розробку програми для автоматизації роботи автопідприємства. Перелік та опис використаних компонентів та основних процедур програми. Опис структур та методів обробки даних. Інструкція для користувача.

    курсовая работа [2,3 M], добавлен 15.02.2012

  • Головні принципи візуального програмування, опис компонентів Delphi, використаних при розробці проекту. Опис програми-додатку "Психологічний тест" та список дій користувача. Алгоритм роботи програми, її форма та ієрархія. Опис графічного інтерфейсу.

    курсовая работа [1,2 M], добавлен 08.06.2010

  • Аналіз предметної області, постановка задачі. Формулювання проблеми. Аналіз предметної області. Постановка задачі. Проект програми. Ієрархія об’єктів. Ієрархія наслідування. Діаграма станів гри. Специфікація. Кодування.

    курсовая работа [217,2 K], добавлен 16.06.2007

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.