Автор работы: Пользователь скрыл имя, 14 Февраля 2013 в 21:48, дипломная работа
Метою дослідження є перевірка навичок програмування на QT, отримання розробленої системи автоматичного мережевого розподілення навчального матеріалу у комп’ютерному класі з урахуванням IP-адрес комп’ютерів й інструкції з її використання та закріплення знань, отриманих в процесі теоретичної діяльності.
Задачі дослідження наступні:
Робота над програмним продуктом та реалізацією програмного забезпечення;
Застосування знань про мережну роботу засобами QT;
Застосування знань про маніпулювання файловою системою й роботою з нею засобами QT;
Отримання нового досвіду з проектування на платформі QT;
ВСТУП 6
РОЗДІЛ 1. АНАЛІЗ ДЖЕРЕЛ СТОСОВНО МЕТОДІВ РОЗРОБКИ 9
Вибір середи програмування 9
Технологія клієнт – сервер: взаємодія клієнта з сервером 11
Робота з мережею засобами QT 13
Використання TCP за допомогою класів QTcpSocket та QTcpServer 14
Робота з файловою системою засобами QT 16
Клас QFileSystemModel 17
Клас QDir. Перегляд вмісту директорії за допомогою QDir 17
Клас QFile 19
Клас QFileInfo 20
Робота з потоками засобами QT 21
Клас QThread 22
Класи QRunnable та QThreadPool 24
Клас QtConcurrent 24
РОЗДІЛ 2. ОСНОВНІ ПРОБЛЕМИ РОЗРОБКИ ТА ЇХ РІШЕННЯ 26
Мета розробки 26
Основні задачі та проблеми 26
Крос-платформність 27
Робота з мережею: захист від збоїв 28
Власний протокол взаємодії клієнта з сервером 29
Маніпулювання файловою системою 30
Алгоритм роботи програми 32
Алгоритм роботи сервера 32
Алгоритм роботи клієнта 34
Алгоритм роботи графічного клієнта 35
РОЗДІЛ 3.РЕАЛІЗАЦІЯ СИСТЕМИ АВТОМАТИЧНОГО МЕРЕЖЕВОГО РОЗПОДІЛЕННЯ НАВЧАЛЬНОГО МАТЕРІАЛУ У КОМПЬЮТЕРНОМУ КЛАСІ 36
Програмна реалізація сервера 38
Програмна реалізація клієнта 40
Програмна реалізація графічного клієнта 42
Інструкція з використання програми 44
РОЗДІЛ 4. ОХОРОНА ПРАЦІ 48
Основні поняття охорони праці 48
Загальні положення 50
Вимоги до виробничого персоналу 51
Вимоги безпеки під час роботи 53
Вимоги безпеки в аварійних ситуаціях 54
Інструкція із заходів пожежної безпеки є службових кабінетах і лабораторіях 55
Загальні положення 55
Співробітники зобов'язані 55
Забороняється 55
Дії при пожежі 55
Обов'язки особи, відповідального за протипожежний стан приміщення 56
Відповідальність особи, відповідального за протипожежний стан приміщенні 56
ВИСНОВКИ 57
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 59
Головна задача клієнта – обробляти команди від сервера.
Головна задача графічного клієнта – забезпечити взаємодію з користувачем та можливість маніпулювання усіма доступними клієнтами.
Основною метою даної кваліфікаційної роботи є розробка системи автоматичного мережевого розподілення навчального матеріалу у комп’ютерному класі з урахуванням IP-адрес комп’ютерів. Для реалізації були поставлені наступні задачі:
При реалізації кожна з вище перелічених проблем була вдало і вміло вирішена за допомогою засобів платформи QT. Розглянемо кожний пункт окремо.
Крос-платформне програмне забезпечення – програмне забезпечення, що працює більш ніж на одній апаратній платформі і операційній системі. Типовим прикладом є програмне забезпечення, призначене для роботи в операційних системах Windows та Linux одночасно.
Для створення
системи автоматичного
Бібліотека
QT замислювалася і починалася як
крос-платформний
Платформо-незалежна платформа QT дозволяє запускати написане за його допомогою ПЗ в більшості сучасних операційних систем шляхом простої компіляції програми для кожної ОС без зміни початкового коду і при роботі ми завжди отримаємо вірний результат і в середовищі Windows, і в середовищі Unix / Linux, і на комп'ютерах Macintosh.
Легкість
в написанні та розумінні програми.
QT надає цілісний каркас (framework), що дозволяє
при написанні програми використовувати
тільки класи QT і практично повністю
відмовитися від написання
Протокол ТСР/ІР (див. 1.3.2) гарантує повну доставку, але через затримку в мережі ця доставка може відбуватися частинами. В нашому випадку дуже важливо, щоб обробка пакету відбувалася цілком, тобто обробка може починатись тільки коли весь пакет доставлений. Таким чином, при розробці системи автоматичного мережевого розподілення інформації було знайдене рішення: при відсилці кожного пакету, спочатку відсилається його розмір (m_nNextBlockSize) (Лістинг 2.1).
while(keep alive)
{ if (!m_nNextBlockSize)
{ if (socket->bytesAvailable() < sizeof(quint64))
{
break;
}
in >> m_nNextBlockSize;
}
if (socket->bytesAvailable() < m_nNextBlockSize)
{
break;
}
Лістинг 2.1 – Цикл обробки команд
На початку коду циклу обробки команд, ми чекаємо спочатку розмір пакету (m_nNextBlockSize), після чого вже чекаємо доки протокол доставить всю інформацію, передану у пакеті.
Таким чином, ми вирішили проблему захисту інформації від збоїв при передачі по мережі за допомогою протоколу ТСР/ІР засобами QT.
Взаємодія програм, що використовують протокол TCP, будується відповідно до моделі "клієнт-сервер. Дана модель передбачає, що одна програма (сервер) завжди пасивно очікує звернення до неї іншої програми (клієнта). Для встановлення зв'язку між програмою-клієнта і сервера використовуються такі дані:
Коли клієнт і сервер починають використовувати TCP, створюється віртуальний канал. Дані по цьому каналу можуть одночасно передаватися в обох напрямках. Один прикладний процес пише дані в TCP-порт, вони проходять по мережі, а інших прикладний процес читає їх зі свого TCP-порту. Для того, щоб клієнт міг звертатися до необхідного йому серверу, він повинен знати номер порту, за яким сервер очікує звернення до нього .
Програми-клієнти,
які є активною стороною у взаємодії
"клієнт-сервер", можуть використовувати,
як правило, довільні номери портів, які
призначаються динамічно
Таким чином, будується зв’язок по мережі між клієнтом та сервером (див. 1.3.2 та 2.4). Для повної взаємодії клієнта з сервером був розроблений власний протокол передачі даних.
Передача будь-якої команди як на сервер, так і на клієнта здійснюється за допомогою цього протоколу в наступному порядку:
Таким чином, реалізовується взаємодія клієнта з сервером
Основною метою програми є маніпулювання файловою системою віддаленого комп’ютера (клієнта). Для даних цілей був використаний клас QFileSystemModel (див. 1.4.1).
QFileSystemModel клас (Лістинг 2.2) надає модель даних для локальної файлової системи. Цей клас забезпечує доступ до локальної файлової системи, забезпечуючи функції перейменування й видалення файлів та каталогів, а також для створення нових каталогів. Таким чином, даний клас дуже вдало використаний, бо відповідає меті та задачам, поставленим переді мною.
ModelFileSystem::
{ filemodel = new QFileSystemModel(obj);
changeDrive(rp);
}
Лістинг 2.2 – Клас QFileSystemModel
За допомогою цього класу реалізоване вибір жорсткого диску (changeDrive), переміщення (goTo), переміщення назад (goBack) та вперед (goForward), повернення до домашнього каталогу (goHome).
Також, дана система передбачає доступ до інформації віддаленого комп’ютеру: жорстких дисків (Лістинг 2.3), каталогів та файлів. За допомогою класів QFileInfo та QDir (див. 1.4.2 та 1.4.4) ми можемо отримати список жорстких дисків віддаленого комп’ютеру (Лістинг 2.3).
QStringList ModelFileSystem::
{ QStringList drives;
foreach(QFileInfo drive, QDir::drives())
{ drives.push_back(drive.
return drives;
}
Лістинг 2.3 – Отримання списку жорстких дисків віддаленого комп’ютеру за допомогою QFileInfo та QDir
За допомогою класу QDir можна одержати вміст вказаної директорії. При цьому допускається застосування різних фільтрів, щоб виключити зі списку файли, які не цікавлять Вас. Для цих цілей в класі визначено методи entryList() і entryInfoList(). Перший повертає список імен елементів (QStringList), а другий – інформаційний список (QFileInfoList). Якщо вам потрібно дізнатися тільки кількість елементів, що знаходяться в директорії, то просто викличте метод count().
Оскільки, платформа QT незалежна від ОС, то при роботі з класом QDir ми завжди отримаємо вірний результат: для Windows – список жорстких дисків, для Linux – кореневий каталог.
Завдання класу QFileInfo полягає в наданні інформації про властивості файлу, наприклад: ім'я, розмір, час останньої зміни, права доступу і т.д.
У класі QFile містяться методи для роботи з файлами: відкриття, закриття, читання та запису даних. Завдяки класу QFile (див. 1.4.3) ми можемо здійснювати копіювання файлів та каталогів з одного клієнта на інший.
Всі описані вище класи (QFileSystemModel, QDir, QFile та QFileInfo) роблять можливим маніпулювання файловою системою засобами QT. Таким чином, ми можемо вважати дану проблему вирішеною.
Враховуючи проблеми та шляхи їх
рішення був розроблений
Після запуску сервера на порту 4200, програма-сервер починає чекати з’єднання нових клієнтів. При отриманні нового з’єднання, сервер заносить його до списку підключених клієнтів (QVector), отримує ім’я клієнта та його ID, після чого за допомогою ID визначає тип клієнта: консольний чи графічний.
Якщо це графічний клієнт, сервер відправляє до нього список доступних консольних клієнтів, після чого чекає на команди від графічного клієнта та виконує їх.
Якщо ж це команди маніпулювання файловою системою сервера, тоді сервер виконує їх локально та відразу ж відправляє відповідь до графічного клієнта.
У тому разі, якщо це команди маніпулювання файловою системою іншого клієнта, сервер перенаправляє отриману команду до вказаного клієнта використовуючи його ІР-адрес, після чого, отримавши відповідь від вказаного клієнта, відправляє отриману інформацію до графічного клієнта.
Викладаний алгоритм повністю відповідає роботі програми.
Таким чином, враховуючи всі перераховані вище проблеми та шляхи їх рішення, отримуємо алгоритм роботи сервера (див.рис.2.1), який повністю описує послідовність та порядок операцій, які виконує сервер.
Рис. 2.1 – Алгоритм роботи сервера
При запуску у якості параметрів клієнт отримує ІР-адрес та порт сервера, після чого з інтервалом в 1 хвилину намагається підключитися до сервера. При вдалому підключенні, відправляє ім’я та ID, та чекає на команди від сервера. Всі команди оброблюються за допомогою класів маніпулювання локальною файловою системою. Результат роботи передається назад до сервера (Рис. 2.2).
Рис. 2.2 – Алгоритм роботи клієнта
При першому запуску графічний клієнт автоматично відкриє форму налаштування, де користувач зможе ввести ІР-адрес сервера та його порт. Після вдалого підключення до сервера графічний клієнт відсилає своє ім’я та ID, після чого отримує від сервера список доступних консольних клієнтів та зможе маніпулювати їх файловими системами (Рис. 2.3).
Рис.2.3 – Алгоритм роботи графічного клієнта
РОЗДІЛ 3
РЕАЛІЗАЦІЯ СИСТЕМИ АВТОМАТИЧНОГО
РОЗПОДІЛЕННЯ НАВЧАЛЬНОГО МАТЕРІАЛУ
У КОМП’ЮТЕРНОМУ КЛАСІ
Систему можна поділи на три частини: сервер, клієнт та графічний клієнт.
Як видно з трьох діаграм (див.рис.3.1, 3.2 та 3.3), що всі три програми мають два однакові класи для маніпулювання локальною файловою системою: ModelFileSystemItem та ModelFileSystem. Розглянемо їх.
Клас ModelFileSystemItem зберігає інформацію о файлі або каталозі, а саме:
Клас ModelFileSystem дозволяє маніпулювання локальною файловою системою, а саме переходити по дереву каталогів, отримувати список файлів поточного каталогу та ін. Включає наступні атрибути:
Розглянемо методи класу ModelFileSystem:
Информация о работе Розробка системи автоматизованого мережевого розподілення навчального матеріалу