СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1 АНАЛИЗ И ПОСТАНОВКА ЗАДАЧИ
1.1 Анализ исходных данных
1.2 Выбор специального и общесистемного программного обеспечения
1.3 Выводы по первой главе
2 ПРОЕКТИРОВНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Функции клиента и сервера
2.2 Макет пользовательского интерфейса
2.3 Прикладной протокол взаимодействия клиента и сервера
2.4 Алгоритм работы клиента и сервера
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
3.1 Детальная реализация функциональных частей программного обеспечения
3.2 Сопроводительная документация программного обеспечения
3.3 Тестирование программного обеспечения
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ВВЕДЕНИЕ
В данной курсовой работе предполагается реализовать клиент-серверное приложение с графическим интерфейсом с удаленным управлением файловой системой. Удаленный проводник позволяет подключится к другому компьютеру для просмотра данных, а так же производить запись нужных данных клиенту на свой компьютер.
Как правило компьютеры и программы, входящие в состав информационной системы, не являются равноправными. Некоторые из них владеют ресурсами (файловая система, процессор, принтер, база данных и т.д.), другие имеют возможность обращаться к этим ресурсам. Компьютер (или программу), управляющий ресурсом, называют сервером этого ресурса (файл-сервер, сервер базы данных, вычислительный сервер). Клиент и сервер какого-либо ресурса могут находится, как в рамках одной вычислительной системы, так и на различных компьютерах, связанных сетью.
Основной принцип технологии "клиент-сервер" заключается в разделении функций приложения на три группы:
- ввод и отображение данных (взаимодействие с пользователем);
- прикладные функции, характерные для данной предметной области;
- функции управления ресурсами (файловой системой, базой данных и т.д.)
Целью данного курсового проектирования является реализация клиент-серверного приложения «Удаленный проводник». Основным предназначением реализуемого программного продукта является просмотр и сохранения файлов.
1 АНАЛИЗ И ПОСТАНОВКА ЗАДАЧИ
1.1 Анализ исходных данных
Исходными данными для разработки данного проекта являются следующие утверждения:
- задача сервера – предоставлять доступ и выполнять команды клиентов;
- минимальное число поддерживаемых клиентов – 4;
- задача клиента – смотреть (искать), скачивать (загружать) файлы с(на) удаленный сервер;
- конфигурация сетевого адреса – в специальном файле;
- клиентский интерфейс – консольный или оконный;
- тип сокетов – блокирующий или неблокирующий;
- транспортный протокол – TCP;
- язык программирования – С/С++;
- вспомогательные библиотеки – Qt;
- платформа реализации – ОС Linux и ОС Windows;
- для работы с файловыми объектами использовать системные вызовы;
- выводить информационные сообщения в стандартный поток вывода на сервере.
2 ПРОЕКТИРОВНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Функции клиента и сервера
На рисунке 2.1 представлена диаграмма вариантов использования.
Рисунок 2.1 – Диаграмма вариантов использования
Функции клиента:
- отправлять команды на просмотр, загрузку и сохранение файлов;
- получать результаты о выполнении команд.
Функции сервера:
- предоставлять доступ клиентам;
- получать команды от клиента;
- выполнять команды клиентов;
- отправлять результат о выполнении команд.
Фрагмент кода из проекта
3.1.1 Реализация функциональной части клиента и сервера
Представим результаты проектирования главных частей клиент-серверного приложения «Удаленный проводник»
Листинг 3.1 – Подключение к серверу
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->server = new Server(this);
ui->lineEdit->setText("127.0.0.1");
connect(this->server,SIGNAL(connectedToHost()),this,SLOT(connectedToHost()));
connect(this->server,SIGNAL(disconnectedToHost()),this,SLOT(disconnectToHost()));
connect(this->server,SIGNAL(acceptInfoFiles(QList<FileInfo>)),this,SLOT(updateTable(QList<FileInfo>)));
connect(this->server,SIGNAL(uploadFileToHost()),this,SLOT(uploadFileToHost()));
connect(this->server,SIGNAL(downloadFile(QByteArray,QString)),this,SLOT(downloadFile(QByteArray,QString)));
}
Листинг 3.2 – Отправление команды
void MainWindow::on_tableWidget_doubleClicked(const QModelIndex &index)
{
if(ui->tableWidget->item(index.row(),1)->text()=="Папка с файлами")
{
this->server->requestToDirInfo(ui->tableWidget->item(index.row(),0)->text());
}
}
void MainWindow::on_pushButton_clicked() //connect
{
QHostAddress address(ui->lineEdit->text());
if(address.isNull())
{
QMessageBox::about(this,"СООБЩЕНИЕ!","Введите корректный IP - адрес сервера.");
return;
}
this->server->connectToServer(ui->lineEdit->text(),3333);
}
СОДЕРЖАНИЕ АРХИВА
-Пояснительная записка содержит 20 листов
-Исходный код на C++ для Visual Studio
samuel992