> 2. Функціональні вимоги та архітектура програми
2.1 Функціональні вимоги
Програма повинна забезпечувати:
? передачу файлів від клієнта до сервера;
? передачу файлів від сервера до клієнта;
? обмін повідомленнями;
? кожна програма повинна забезпечувати функції клієнта і сервера одночасно;
2.2 Архітектура програми
Аналізуючи завдання можна помітити, що програма повинна забезпечувати функції клієнта і сервера одночасно. Тобто клієнтська частина програми не повинна впливати на серверну частину. Виходячи з цього, архітектура системи буде будуватися на моделі "Клієнт-Сервер", описаної вище, і принципу обміну даними "Запит - відповідь". Клієнт і Сервер працюватимуть в окремих потоках, порти їх сокетів будуть різними, функції будуть рознесені в окремі класи. Цим самим ми зможемо домогтися, що клієнт після підключення до сервера може самостійно вибирати необхідні йому файли, без участі адміністратора сервера. Той же у свою чергу зможе підключитися до іншого користувача, обмінюватись повідомленнями з обома користувачами. Короткі схеми принципу роботи програми показані на рис.1.2 і рис.1.3 [4,5]
мережева комп'ютер клієнт сервер
2.3 Діаграма класів
В
Рис.2.1 - Діаграма класів
У нашій виходить 3 класу: класи Server і Client - класи зв'язку між локальним і віддаленим комп'ютером, і клас Window - для взаємодії користувача і класів Server і Client, для відображення всіх даних та інформації.
Розглянемо функції кожного з класів.
Клас Server:
? Створити потік - ініціалізує всі дані, необхідні для підключення;
? Запустити - встановлює серверний сокет на прослуховування вхідних підключень. При підключенні клієнта встановлює з'єднання і очікує запити від нього;
? Завершити потік - закриває всі готівкові підключення до сервера, очищає зарезервовані дані і припиняє свою роботу;
? Відправити список логічних томів - відправляє клієнтові список логічних томів на сервері;
? Відправити список файлів - відправляє клієнтові список файлів і каталогів по запитуваній шляху;
? Відправити файл - передає дані запрошуваного файлу клієнту;
?