Автор работы: Пользователь скрыл имя, 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
Для створення
системи автоматичного
Бібліотека
QT замислювалася і починалася як
крос-платформний
В даний
час QT значно переросла рамки інструментарію
для розробки графічних інтерфейсів
програм. Вона надає програмісту
цілісний каркас (framework), що дозволяє при
написанні більшої частини
На сьогоднішній день QT задовольняє всім сучасним вимогам в створенні програм, як невеликих додатків, так і вузькоспеціалізованих програмних комплексів.
Таким чином,
вибір платформи QT для створення
системи автоматичного
1. Платформо-незалежність. QT дозволяє запускати написане за його допомогою ПЗ в більшості сучасних операційних систем шляхом простої компіляції програми для кожної ОС без зміни початкового коду і при роботі ми завжди отримаємо вірний результат і в середовищі Windows, і в середовищі Unix / Linux, і на комп'ютерах Macintosh;
2. Легкість в написанні та розумінні програми. QT надає цілісний каркас (framework), що дозволяє при написанні програми використовувати тільки класи QT і практично повністю відмовитися від написання системно-залежного коду, використання системних викликів та ін. Включає в себе всі основні класи, які можуть знадобитися при розробці прикладного програмного забезпечення, починаючи від елементів графічного інтерфейсу і закінчуючи класами для роботи з рядками, файлами, мережею, базами даних, XML, для забезпечення багатопоточності в програмі і багато іншого;
3. Зручний інтерфейс та легкість в використанні. Однією з основ бібліотек QT є інтерфейс користувача. Бібліотека QT замислювалася як крос-платформний інструментарій (toolkit) для швидкої розробки графічних інтерфейсів (GUI) програм на мові C++.
Технологія клієнт – сервер є одним із архітектурних шаблонів програмного забезпечення та домінуючою концепцією у створенні розподілених мережних застосувань і передбачає взаємодію та обмін даними між ними. Вона передбачає такі основні компоненти (див.рис. 1.1):
- набір серверів, які надають інформацію або інші послуги програмам, які звертаються до них;
- набір клієнтів, які використовують сервіси, що надаються серверами;
- мережа, яка забезпечує взаємодію між клієнтами та серверами.
Рис. 1.1. – Модель технології клієнт – сервер
Клієнт – це робоча станція користувача, що виконує функції взаємодії з користувачем, здійснює необхідні обчислення і забезпечує приєднання до віддалених ресурсів сервера, засобів їх обробки та управління ними.
Програмне
забезпечення клієнта може використовувати
запуск програм на віддалених робочих
місцях чи серверах. Це дозволяє не тільки
зберігати фрагменти (модулі) прикладних
програм на різних комп'ютерах для
розподілу їх між користувачами,
але й виконувати їх на різних комп'ютерах.
Робоча станція клієнта може не мати
жорсткого диска з якого
Сервер – це одно або багатопроцесорний комп 'ютер з розділеними пам'яттю, обробкою даних, засобами телекомунікації і засобами управління устаткуванням. Сервери розрізняються за функціями обслуговування клієнтів: файл-сервери, сервери баз даних, комунікаційні сервери, обчислювальні сервери тощо.
Сервер взаємодіє з клієнтом за допомогою механізму транзакцій.
Транзакція – це сеанс обміну даними між робочою станцією та сервером, при якому сервер відслідковує запити клієнта, ставить їх в чергу, виконує згідно з розписом, сповіщає клієнту про виконання та надає результат обробки.
Технологія клієнт – сервер забезпечує використання:
- корпоративного управління всіма ресурсами інформаційної системи, що доступні через мережі передачі даних;
- розділення доступу до даних і програм між: робочими станціями і серверами, які з 'єднані мережами передачі даних;
- організації програмного забезпечення на основі концепції відкритих систем.
Таким чином за технологією клієнт – сервер користувач не керує ходом виконання поставленої проблеми, а система автоматично здійснює рішення поставленої задачі, оптимальним чином використовуючи ресурси технічних засобів, баз даних та засобів телекомунікації. Це означає, що одна задача може вирішуватись багатьма робочими станціями та серверами, які розміщені в різних частинах міста, країни, світу, тобто є територіально розподіленими.
Модуль роботи з мережею QtNetwork надає класи, які допомагають зробити мережеве програмування простіше. Він пропонує як класи високого рівня, такі як QHttp і QFtp, які імплементують специфічні протоколи рівня програм, і класи низького рівня, такі як QTcpSocket, QTcpServer і QUdpSocket. З повним переліком класів для написання клієнтів і серверів TCP / IP, які надає модуль QtNetwork можна ознайомитись у Таблиці 1.1.
Таблиця 1.1
Класи |
Опис |
QAbstractSocket |
Базовий функціонал, загальний для всіх типів сокетів |
QAuthenticator |
Об'єкт аутентифікації |
QFtp |
Реалізація клієнтського боку FTP-протоколу |
QHostAddress |
IP-адреса |
QHostInfo |
Статичні функції для пошуку імен хостів |
QHttp |
Реалізація HTTP-протоколу |
QHttpHeader |
Заголовна інформація для HTTP |
QHttpRequestHeader |
Заголовна інформація HTTP запиту |
QHttpResponseHeader |
Заголовна інформація HTTP відповіді |
QNetworkAddressEntry |
Зберігає одну IP-адресу, підтримувану мережевим інтерфейсом, разом з маскою мережі та широкомовною адресою |
Продовження таблиці 1.1
QNetworkInterface |
Список IP-адрес комп'ютерів і мережевих інтерфейсів |
QNetworkProxy |
Робота з проксі |
QSslCertificate |
Допоміжне API для сертифікатів X509 |
QSslCipher |
Робота з SSL криптографією |
QSslError |
Помилка SSL |
QSslKey |
Інтерфейс для закритих і відкритих ключів |
QSslSocket |
Зашифрований SSL-сокет для клієнтів і серверів |
QTcpServer |
TCP-сервер |
QTcpSocket |
TCP-сокет |
QUdpSocket |
UDP-сокет |
QUrlInfo |
Зберігає інформацію про адреси URL |
TCP (Transmission
Control Protocol) є мережевим протоколом
низького рівня, що
Клас QTcpSocket
надає інтерфейс для TCP. Ви можете
використовувати QTcpSocket для створення
стандартних мережевих
Перед передачею даних повинне бути встановлене TCP-з'єднання з віддаленим хостом і портом (див.рис.1.2). Як тільки зв'язок встановлен, IP-адреса та порт з'єднання доступні через QTcpSocket :: peerAddress() і QTcpSocket :: PeerPort(). Будь-коли з'єднання може бути закрито, і тоді передача даних буде негайно зупинена.
Рис. 1.2 – TCP-з'єднання
QTcpSocket працює
асинхронно і посилає сигнали,
що повідомляють про зміну
статусу і помилки, так само
як в QHttp і QFtp. Записувати дані
в сокет можна використовуючи
QTcpSocket :: write(), а читати дані використовуючи
QTcpSocket :: read(). QTcpSocket надає два незалежних
потоку даних: один для
Так як QTcpSocket успадкований від QIODevice, можна використовувати його з QTextStream і QDataStream. При читанні з QTcpSocket потрібно впевнитися, що доступно достатньо даних, це можна зробити за допомогою виклику QTcpSocket :: bytesAvailable ().
Якщо вам потрібно обробити вхідні TCP-з'єднання (наприклад, в серверному додатку), використовуйте клас QTcpServer. Викликавши QTcpServer :: listen(), встановіть сервер, і з'єднайтесь з сигналом QTcpServer :: newConnection() або QTcpServer :: incomingConnection(), який надсилається для кожного клієнта при з'єднанні. Працюючи з QTcpServer є дві можливості обробляти вхідні з'єднання:
У слоті викличте QTcpServer :: nextPendingConnection() для того, щоб прийняти з'єднання і використовувати повертаємий об'єкт QTcpSocket для спілкування з клієнтом.
Хоча більшість його функцій працює асинхронно, можливо синхронне використання QTcpSocket (в блокуючому режимі). Щоб встановити блокуючий режим викличте функції WaitFor...() QTcpSocket'а, вони призупиняють виконання потоку до тих пір, поки не буде отриманий сигнал. Наприклад, після виклику неблокуючої функції QTcpSocket :: connectToHost(), викличте QTcpSocket :: waitForConnected(), щоб блокувати потік до отримання сигналу connected().
Використання синхронних сокетів часто призводить до більш простого коду. Головна незручність WaitFor...() підходу полягає в тому, що події не будуть оброблятися, поки потік блокується функцією WaitFor...(). Якщо використати в GUI потоці, то це може "заморозити" користувальницький інтерфейс програми. Тому рекомендується використовувати синхронні сокети тільки в не-GUI потоках. QTcpSocket при синхронному використанні не вимагає циклу подій.
Більш детально розглянемо код QTcpServer :: incomingConnection() (Лістинг 1.1):
QTcpServer::
{ QTcpSocket *socket = new QTcpSocket(this);
socket->setSocketDescriptor(
d_func()->pendingConnections.
}
Лістинг 1.1 – Класи QTcpServer та QTcpSocket
Динамічно в кучі створюється новий екземпляр QTcpSocket, зв'язується з вхідним підключенням і зберігається в списку. Важливо, що QTcpSocket створюється в основному потоці.
В QT є дві вбудовані моделі роботи з файлами: QDirModel і QFileSystemModel та три класи: QDir, QFileInfo та QFile. Розглянемо кожний з них.
QFileSystemModel клас надає модель даних для локальної файлової системи. Цей клас забезпечує доступ до локальної файлової системи, забезпечуючи функції перейменування й видалення файлів та каталогів, а також для створення нових каталогів.
QFileSystemModel можна отримати за допомогою стандартного інтерфейсу, наданого QAbstractItemModel, це також надає деякі допоміжні функції, специфічні для каталогу моделі. fileInfo(), isDir(), name() и path() – функції надання інформації про основні файли та каталоги, пов'язані з елементами моделі. Каталоги можуть бути створені і видалені за допомогою mkdir(), rmdir().
Информация о работе Розробка системи автоматизованого мережевого розподілення навчального матеріалу