Удаленный рабочий стол для Linux - Программирование, компьютеры и кибернетика курсовая работа

Удаленный рабочий стол для Linux - Программирование, компьютеры и кибернетика курсовая работа



































Разработка приложения, которое осуществляет удаленный доступ управления компьютером с операционной системой Linux с компьютера с ОС Windows. Реализация функциональной части. Графический интерфейс клиента и сервера. Разработка интеграционных тестов.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
1.2 Специальное и общесистемное программное обеспечение
3.1 Детальная реализация функциональных частей ПО
3.1.1 Реализация функциональной части
3.1.2 Разработка пользовательского интерфейса
3.2 Сопроводительная документация программного обеспечения
3.2.1 Разработка описания программы
3.2.2 Разработка руководства пользователя
3.2.3 Разработка методики интеграционных тестов
3.3 Анализ программного обеспечения
3.3.1 Анализ исходного кода приложения
3.3.2 Анализ производительности приложения
3.4 Тестирование программного обеспечения
3.4.2 Результаты интегрированного тестирования
Целью данного курсового проекта является разработка приложения, которое осуществляет удаленный доступ управления компьютером c операционной системой Linux с компьютера с операционной системой Windows.
По мере развития компьютерных сетей, все большую актуальность получает проблема взаимодействия не компьютеров внутри сети, а взаимодействие персональных компьютеров, находящихся в разных сетях. При этом открывается ряд возможностей, недоступных ранее, и в связи с этим возникает ряд технических проблем и сложностей, которые необходимо решить.
Главной проблемой, которую необходимо решить, является возможность объединения в сети персональных компьютеров, физически расположенных в различных точках, скажем в разных офисах или даже в разных офисных зданиях. При этом возникают проблемы не только по организации работы сотрудников с совместными данными, но и с администрированием персональных компьютеров и решением проблем, возникающих у сотрудников в техническом плане.
Аналогом проекта, который также осуществляет удаленный доступ, является программа Team Viewer[1]. Приложение предлагает следующие функции:
- удаленный доступ с несколькими клиентами;
- работа с качеством транслируемого изображения;
- запись сеанса для документирования, включая звук и видео;
- удаленная печать с домашнего офиса;
Один из минусов этой программы заключается в том, что при желании осуществить удаленный доступ, невозможно просмотреть весь список доступных для подключения ПК, требуется ввести только один определенный ID компьютера. Второй недостаток - программа недостаточно оптимизирована в плане требований к скорости интернет соединения, даже при выборе наихудшего качества транслируемого видео.
Предметной областью разрабатываемого проекта является осуществление удаленного администрирования к компьютеру с ОС Linux. Важнейшими аспектами для исследования является соединение клиента с сервером.
Требуется разработать приложение, которое включает в себя следующие функциональные части:
Разработка серверного приложения. Сервер должен предоставлять возможность подключаться к клиенту, делать скриншоты и отсылать их клиенту, а также принимать от клиента информацию о событиях и исполнять их в операционной системе.
Разработка клиентского приложения. Клиент должен представлять собой GUI-приложение, которое должно иметь возможность подключения к клиенту, отображения скриншотов, а также перехватка событий, осуществленных благодаря действиям пользователя и отсылку информации о выполненных действиях серверу.
1.2 Специальное и общесистемное программное обеспечение
При написании данного курсового проекта планируется использовать следующее стороннее программное обеспечение и инструментарий:
- QTCreator[2] - кросс-платформенная свободная IDE для разработки приложений на языках C, C++ и QML. Продукт компании Troltech для работы с фрейммворком QT;
- Qt[2] -  кросс-платформенный  инструментарий разработки ПО на языке программирования  C++ .
- Microsoft Office Word 2010 - для создания пояснительной записки.
- Enterprice Architect[3] - для разработки диаграмм.
- X Window System [4]   --  оконная система , обеспечивающая стандартные инструменты и  протоколы  для построения  графического интерфейса пользователя .
Разработка сервера будет осуществляться на ОС Ubuntu 12.04. Интерфейс сервера будет иметь довольно простой вид, что обусловлено малым взаимодействием с пользователем. Разработка клиента будет осуществляться на ОС Windows7 использованием виджетов, осуществляющих взаимодействие пользователя с самим приложением.
Пользовательский интерфейс клиента.
При загрузке приложений, в первую очередь пользователь видит интерфейс продукта, поэтому особое внимание требуется уделить на разработку интерфейса. Основные критерии создания пользовательского интерфейса:
Программа должна содержать в себе меню, в котором пользователь выбирает нужное ему действие, например, соединиться с пользователем, выйти из программы.
Основное пространство отображения информации в приложении будет представлено в виде поля, в котором отображается скриншот - результат действия пользователя с приложением. Окно приложения должно подстраиваться под разрешение экрана на компьютере с ОС Linux для корректного выполнения событий, информация о которых отсылается серверному приложению.
После составления вышеописанных требований был составлен прототип интерфейса главного окна (Рис.1.1).
Рисунок 1.1 - Прототип интерфейса главного окна
Пользовательский интерфейс сервера.
Серверное приложение должно иметь простой интерфейс, содержащий меню, в котором пользователь выбирает нужное ему действие.
Рис 1.2 - Прототип интерфейса главного окна
Прежде, чем начинать разработку необходимо заранее определить требуемый функционал нашего программного обеспечения, чтобы это сделать было решено составить диаграмму вариантов использования (прецедентов).
В данном проекте в качестве актеров выступают пользователь, (клиентское приложение) и сервер.
Пользователь взаимодействует непосредственно с клиентским приложением и должен иметь возможность выполнить следующие действия:
Ввести IP-адрес компьютера, на котором находится серверное приложение.
Осуществлять нажатия мыши и клавиатуры при активном клиентском приложении.
На основании вышесказанного была построена диаграмма вариантов использования, представленная в Приложении А.
MainWindow - класс, отвечающий за визуализацию приложения, создание окна и за перехватку событий, информация о которых отсылается серверному приложению. Наследует QMainWindow и использует такие стандартные виджеты, как меню и лэйбл, который в свою очередь используется для отображения скриншота на экране, строка состояния, отображающая состояние о соединении.
MyClient - класс, отвечающий за реализацию TCP соединения между приложениями, отправку и прием сообщений. Является наследником класса QObject.
void Display - метод, отображающий полученный скриншот в самом приложении, также на основании загруженного изображения, изменяет размер главного окна, и в этом метода вызывается метод из класса MyServer, в который в качестве параметров передаются сведения о произошедших событиях мыши и клавиатуры.
virtual void mousePressEvent, virtual void mouseReleaseEvent, virtual void mouseMoveEvent, virtual void mouseDoubleClickEvent, virtual void keyPressEvent, virtual void keyReleaseEvent, virtual void wheelEvent - переопределенные специализированные методы, благодаря которым обрабатываются события клавиатуры и мыши и информация о которых в дальнейшем поступлением этой информации серверному приложению.
void slotConnection и void about - методы, которые вызываются при выборе пользователем полей пунктов в меню Connection и About. В слоте slotConnection создается диалоговое окно, в котором пользователь вводит IP-адрес компьютера, на котором находится серверное приложение. About - слот, отображающий информацию о созданном приложении.
MainWindow - класс, отвечающий за визуализацию самого приложения. Наследует класс QMainWindow, которое реализует главное окно, содержащее в себе типовые виджеты. в данном классы использованы такие типовые виджеты, как меню и поле текстового ввода.
MyServer - класс, отвечающий за TCP-соединение и создание скриншотов, наследник QObject, имеет собственные слоты.
Thread - класс, отвечающий за выполнение событий в системе на основании полученных данных от клиента. События будут выполняться в отдельном потоке. Класс унаследован от класса QThread, который предоставляет реализацию потоков.
void slotNewConnection - слот, срабатывающий каждый раз при соединении нового клиента. В нем устанавливается подтверждение соединения с клиентом, старт таймера.
void timerEvent - перехватываемое событие - срабатывание таймера, в котором происходит создание скриншота и отсылка его клиенту, а также сохранение текущего скриншота в файл. Формат для изображения выбран JPEG из-за оптимального сжатия полученного изображения. При запуске таймера указывается время, интервал, по истечении которого срабатывает событие таймера. Для обеспечения оптимальности, выбрано время 3 секунды, т. е.клиенту будут отсылаться скриншоты, отображающие результат работы на сервере, каждые 3 секунды.
void slotReadClient - слот, связанный с сигналом readyRead(), отвечающий за прием информации о событиях, произошедших на стороне клиента.
void run - переопределенный метод, в котором осуществляется анализ принятой информации о событиях, и, в зависимости от условий, вызов определенного события в системе, такого, как нажатие клавиши мыши и клавиатуры.
void mousemove - метод, вызывающийся, если событие, поступившее от клиента - движение мыши. Использует библиотеку Xlib.
void m_click - метод, который срабатывает, если на сервер поступила информация о том, что был совершен клик мыши. В метод передается кнопка мыши, которая была нажата.
void k_press - метод, который вызывется при поступлении информации о том, что была нажата клавиша на клавиатуре. В метод поступает символ, который был нажат, и на основании символа в результате использования функций X11, получается в конце код этого символа. происходит посылка события системе, сначала - нажатия клавиши, далее - отпускания.
На основании вышесказанного была построена диаграмма классов, представленная в Приложении Б.
Алгоритм обработки команд сервера на клиенте.
Клиент обрабатывает события мыши и клавиатуры, отсылая данные о событиях клиенту, а так же отвечает за корректное отображение полученного скриншота в главном окне.
Сервер на основании полученных данных эмулирует устройства ввода и отсылает скриншот.
На основании вышесказанного были построены диаграммы последовательности и активности, представленная в приложении В и приложении Г соответственно.
Для взаимодействия клиента с сервером используется протокол передачи данных TCP.
Для корректной работы были подключены следующие библиотеки и модули:
модуль QtGui - подключен для создания GUI:
модуль QNetwork - для реализации подключения клиента и сервера посредством TCP.
XLib - библиотека функций клиента  системы X Window . Библиотека подключена для реализации эмулирования мыши и клавиатуры.
На основании вышесказанного была построена диаграмма активности, представленная в Приложении Д.
Перед реализацией программы было решено обмениваться информацией по протоколу передачи данных TCP.
TCP имеет важное преимущество: гарантирует целостность доставки пакета до адресата.
Сервер с клиентом обменивается двумя типами данных:
Клиент отправляет серверу информацию о выполненных событиях массивом байт, вследствие чего сервер ведёт себя определённым образом. В массив байт записывается строка, в которую в свою очередь записываются данные о произошедшем событии мыши или клавиатуры. данные представлены перечислениями.
При отправке пакетов от сервера к клиенту по сети передаётся массив байт. В массив байт заносятся данные из буфера (тип QBuffer), в который записывается сам скриншшот.
3.1. Детальная реализация функциональных частей ПО
3.1.1 Реализация функциональной части
Сервер содержит следующие методы и слоты:
slotNewConnection - вызывается каждый раз при соединении с новым клиентом. Подтверждает соединение, отвечает за старт таймера и потока и ожидает получения команд от клиента. В листинге 1 приведён исходный код данного метода.
Листинг 1 - исходный код слота slotNewConnection
3. pClientSocket = m_ptcpServer->nextPendingConnection();
4. connect(pClientSocket, SIGNAL(readyRead()),
9. QMessageBox::information(0,"Connection","Connected to Client!!!");
slotReadClient - данный слот срабатывает при поступлении запросов от клиента и высылке сигнала readyToRead. Данные добавляются в очередь методом enqueue, которая в свою очередь обрабатывается в отдельном потоке.
Листинг 2 - исходный код слота slotReadClient
pClientSocket = (QTcpSocket*)sender();
in.setVersion(QDataStream::Qt_4_5);
if (pClientSocket->bytesAvailable() < (int)sizeof(quint16))
if (pClientSocket->bytesAvailable() < _block)
timerEvent - метод, который вызывается при генерации события таймера QTimerEvent, который в свою очередь генерируется по истечении установленного интервала запуска таймера. Данный метод реализовывает создание скриншота рабочей области, а также передача его клиенту.
Листинг 3 - исходный код метода timerEvent
void MyServer::timerEvent(QTimerEvent *qe)
QDesktopWidget* gt = QApplication::desktop();
QPixmap pix = QPixmap::grabWindow(gt->screen()->winId());
QDataStream out(&byte,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_8);
Клиентское приложение взаимодействует с пользователем и выполняет следующие действия:
Отображение скриншотов в окне приложения
Передача данных о мыши и клавиатуре
При желании подключиться к клиенту, пользователь может выбрать пункт «Connection» в меню «Action», либо нажать сочетание клавиш Ctrl+C. При этом срабатывает метод dialog_call. В методе вызывается диалоговое окно, в котором требуется ввести IP-адрес сервера. Для проверки корректности ввода используется регулярное выражение и проверка полученной строки методом contains. После прохождения проверки на корректность ввода при успешном результате срабатывает конструктор класса MyClient.
QRegExp reg("\\b(([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\b");
str = QInputDialog::getText(0,"IP-Address","Enter IP(cancel - localhost): ",QLineEdit::Normal,"localhost",&bOk);
if((str.contains(reg)>0) || (str == "localhost"))
Так же, как и в сервере, у клиента есть слот slotReadyRead, который срабатывает по такой же схеме как в серверном приложении.
Листинг 5 - листинг слота slotReadyRead
if (m_pTcpSocket->bytesAvailable() < sizeof(quint32))
if (m_size_bytes > m_pTcpSocket->bytesAvailable())
QByteArray barr = m_pTcpSocket->read(m_size_bytes);
QImageReader reader(&buffer, "jpg");
QPixmap px = QPixmap::fromImage(image);
pixmap->save("./test_1.jpg","jpg");
41. pix.save("./test_1.jpg","jpg");
При срабатывании любого события мыши и клавиатуры вызываются соответственные переопределенные методы обработки данных событий, в которых происходит анализ полученной информации о том, например, какая кнопка мыши была нажата либо какая кнопка клавиатуры была нажата или отпущена. Кроме анализа полученных данных, происходит запись данной информации перечисления, а также вызов метода sendToServer, в котором происходит преобразование полученный данных в строку, далее в массив байт и передача серверу обработанных данных.
Листинг 6 - один из переопределенных методов mousePressEvent
void MainWindow::mousePressEvent(QMouseEvent *pe)
if(pe->buttons() & Qt::RightButton)
client->slotSendToServer(device, x_pos, y_pos, button, state, wh, mov,keyboard,code,s);
3.1.2 Разработка пользовательского интерфейса
При разработке пользовательского интерфейса особое внимание уделялось простоте и удобству, для наилучшего взаимодействия программы с пользователем.
Графический интерфейс клиента и сервера разрабатывался с помощью наследования от стандартного класса QMainWindow, и состоит из следующих элементов:
Рисунок 3.1 - графический интерфейс клиента.
Рисунок 3.2 - графический интерфейс сервера.
3.2 Сопроводительная документация программного обеспечения
«Данный программный продукт предназначен для удаленного администрирования компьютеров по локальной или беспроводной сети.
Приложение-сервер запускается на компьютере с ОС Linux. Клиентское приложение не требует от пользователя никаких настроек.
Приложение-клиент запускается на компьютере с ОС Windows.
Приложение-клиент требует только ввода IP адреса подключения.
3.2.2 Разработка руководства пользователя
Запустите Server и Client на соответствующих сторонах.
Для запуска серверного и клиентского приложения необходимым и достаточным условием являются следующие требования:
Операционная система - Windows 7/Windows 8 - для Client, Linux Ubuntu 12.04 - для Server.
Размер оперативной памяти - 2гб. DDR2.
3.2.3 Разработка методики интеграционных тестов
Для проверки работоспособности приложения следует разработать интеграционные тесты описанные в таблице 3.1.
Таблица 3.2 - интеграционные тесты.
1) Проверка корректной передачи информации о произошедших событиях устройств ввода.
Произведение нажатий на устройства ввода
3.3 Анализ программного обеспечения.
3.3.1 Анализ исходного кода приложения
Для анализа исходного кода приложения была выбрана программа CppCheck.
В результате работы сканирования файлов ошибки не были выявлены.(Рис. 3.3)
Рис. 3.3 - Результат анализа исходного кода приложения
3.3.2 Анализ производительности приложения
Анализ производительности демонстрационного приложения был проведен с помощью встроенных средства профилирования gprof. Тесты показали, что приложения не дают значительной нагрузки, а значит на машинах сервер будет незаметен, а клиент не вызовет зависаний.
Рисунок 3.2, 3.3-результат анализа производительности.
3.4 Тестирование программного обеспечения
В разрабатываемой программе небольшое количество функций и
может быть легко обернуто в модульный тест, потому что пару методов рассчитаны на отображение скриншота и на его отправку. Корректность вывода может быть проверена только визуально. Поэтому модульные тесты применялись лишь для нескольких функций.
Модульные тесты разрабатывались с помощью библиотеки BOOST TEST[5].
Ниже приведен листинг одного из тестов:
#include
QString st = “0 120 145 1 2 1 3 1065 y”; m_wnd.conversion(i1,i2,i3,i4,i5,i6,i7,i8,s);
В результате модульных тестов были проверены следующие функции:
1)корректное возвращение IP-адреса клиента из диалогового окна ввода IP-адреса
2)корректное передвижение мыши при поступающих координатах
3)корректные клики мыши на определенные объекты на экране
4)корректное соответствие нажатых клавиш на клавиатуре на клиенте и на сервере.
5) корректное эмулирование в зависимости от поступаемых данных.
3.4.2 Результаты интегрированного тестирования
В ходе тестирования программы было разработано два теста, которые покрывают основную функциональную составляющую разработанного продукта.
Так как предметная область программного продукта обуславливает работу с событиями, первый тест реализует проверку на корректность передачи информации о сделанных событиях, а также проверку на их корректное исполнение на сервере.
Тест отработал правильно. Результатом теста является успешный результат.
Рисунок 3.4 - статистика использования клавиатуры и мыши.
Суть второго теста заключается в корректном снятии скриншотов и передаче изображений через сокеты, сравнение изображений, переданных и полученных.
Все тесты отработали правильно. Результатом правильной работы теста являются изображения, хранящиеся в папках с исходными файлами клиента и сервера.
Рисунок 3.5- Изображения на клиенте и на сервере
Результат выполнения модульных тестов приведён в таблице 3.6.
Проверка корректности передачи информации и выполнении ее на сервере
Пройден. Результат приведен на рис.
Таблица 3.6 - Результат выполнения модульных тестов.
В результате выполнения курсового проекта были разработаны следующие приложения: сервер и клиент. Данное приложение создано для удаленного администрирования при условии того, что клиент и сервер находятся под разными операционными системами.
Были получены навыки и умения в следующих сферах:
Программирование в среде QtCreator.
Программирование с использованием библиотеки Xlib.
Получены навыки работы с сокетами, событиями, данными типа QPixmap и QImage.
В заключении хотелось бы отметить, что интерфейсы на клиенте и на сервере выполнены в наиболее удобном и простом варианте, что позволяет пользователю комфортно работать с приложениями.
Знакомство с графическим интерфейсом ASP Linux, его основные преимущества и недостатки, разработка навыков работы с сервисным и прикладным программным обеспечением этой системы. сравнительный анализ функциональных возможностях изученной среды и Windows. методичка [1,6 M], добавлен 12.09.2008
Стандартные компоненты Windows XP. Главное меню, панель задач, оформление рабочего стола и значки рабочего стола. Требования к минимальной конфигурации, необходимой для установки Windows XP на платформе Intel. Удаленный доступ к рабочему столу. курсовая работа [1,1 M], добавлен 14.01.2015
Общие сведения об операционной системе Linux. Анализ информации о серверах. Основные прикладные клиент-серверные технологии Windows. Сведения о SQL-сервере. Общая информация о MySQL–сервере. Установка и специфика конфигурирования MYSQL-сервера на LINUX. курсовая работа [1,3 M], добавлен 16.12.2015
Совместное функционирование всех устройств компьютера и доступ к его ресурсам. Понятие и функции графической операционной системы Windows. Справочная служба Windows. Управление файловой системой. Технология "Plug and Play". Графический интерфейс Windows. контрольная работа [22,2 K], добавлен 22.01.2011
Графический интерфейс (операционные системы), объекты Windows и их свойства. Рабочий стол – графическая среда, на которой отображаются объекты и элементы управления Windows, примеры окон и рабочего стола. Основные приемы управления с помощью мыши. презентация [1,1 M], добавлен 12.04.2010
Виды операционных систем. Графический пользовательский интерфейс операционной системы Linux и Mac OS. Функции устройства управления окнами (windows manager). Программа управления файлами, драйвера, модуль управления памятью - основные компоненты ядра. презентация [1,8 M], добавлен 14.10.2013
Рабочий стол с контекстным меню для работы в Openbox. Настройка параметров панели, ее автозапуск. Терминал для пользователей. Отображение иконок на рабочем столе, установление файлового менеджера. Создание ярлыка, фоновая картинка в качестве обоев. лабораторная работа [1,3 M], добавлен 30.11.2016
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Удаленный рабочий стол для Linux курсовая работа. Программирование, компьютеры и кибернетика.
Дипломная работа по теме Экспертиза моющего робота-пылесова Scooba 385
Архитектор Отчет По Практике
Доклад: Энергия и эволюция культуры
Реферат: South By Southwest Essay Research Paper The
Реферат: Классификация и производство отливок из хладостойкой стали. Отливки из магниевых сплавов
Тексты Для Сочинения 9.3 Огэ 2022
Курсовая Проект На Тему Племена Готов
Реферат: Printing Press Essay Research Paper I believe
Реферат: Україна і Європейський Союз
Реферат: The Lesson To Be Learned In William
Курсовая работа по теме Процесс управления реализацией бизнес-плана в ООО 'Мебель-М'
Реферат: Вирусы
Контрольная Работа П
Реферат по теме Капсуло- и спорообразование у бактерий. Возбудитель столбняка
Курсовая работа по теме Двухзеркальная параболическая антенна круговой поляризации по схеме Кассегрена
Пособие по теме Инновационные игры в подготоке менеджеров
Реферат: Движение. Пространство и время
Управление Кредитным Портфелем Коммерческого Банка Курсовая
Сочинение На Тему Яркие События Лета
Контрольная работа: Обязанности лизингополучателя по договору финансовой аренды (лизинга)
Анализ финансово-хозяйственной деятельности предприятия розничной торговли лесоматериалами ООО "АРХСПМ" - Бухгалтерский учет и аудит отчет по практике
Теоретические аспекты прекаризации труда - Менеджмент и трудовые отношения дипломная работа
Тема дороги в творчестве русских писателей и поэтов XIX века - Литература реферат


Report Page