На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Многопоточное клиент-серверное приложение для обмена файлами Java

Курсовая работа (Задание): 

Разработка клиент-серверного приложения для обмена файлами на языке программирования Java.

Вступление

Для того, чтобы иметь возможность передавать файлы между клиентом и сервером, существует протокол TCP/IP.

TCP – протокол управления передачей. Он служит для обеспечения и установление надежного соединения между двумя устройствами и надежную передачу данных. При этом протокол TCP контролирует оптимальный размер передаваемого пакета данных, осуществляя новую посылку при сбое передачи.

IP – интернет протокол или адресный протокол – основа всей архитектуры передачи данных. Протокол IP служит для доставки сетевого пакета данных по нужному адресу. При этом информация разбивается на пакеты, которые независимо передвигаются по сети до нужного адресата.

Постановка задачи

Задачей проекта является разработка клиент-серверного приложения для обмена файлами на языке программирования Java.

Цели и функции приложения:

  • Многопоточный сервер
  • Удобный и понятный интерфейс клиента
  • Работа с базой данных MySQL
  • Создание приватных комнат для обмена файлами
  • Информационное окно с логированием действий приложения
  • Поддержка архивации выбранным клиентом файлов
  • Поддержка передачи и приёма архивов с файлами

Содержание отчета к программе

В отчете находятся все необходимые диаграммы к нашей программе, такие как:

  • Схема работы стороны сервера и клиента
  • Диаграмма Usecase
  • Диаграмма Statechart
  • Диаграмма Sequence
  • Диаграмма ООП классов

Также, присутствуют все скриншоты с описанием каждого действия пользователя в программе.

Как мы можем увидеть из сриншота, в пояснительной записке содержится 27 страниц.

Описание архитектуры приложения

На рисунке 1 представлена схема работы, которая показывает, как работает наша программа на стороне сервера и клиента.

рисунок 1

Для гибкости разработки программы будем взаимодействовать с объектно-ориентированным программированием. На рисунке 2 представлена UML диаграмма классов на стороне сервера.

рисунок 2

На рисунке 3 представлена UML диаграмма классов на стороне клиента.

рисунок 3

Пример исходного кода

/**
     * Метод отсылает данные клиенту в новом потоке
     * Метод Находит данные в своей папке(dirServer)
     * Если они совпадают с теми, что хочет скачать
     *  пользователь, то отсылаем, иначе
     *  таких файлов нет или ошибка
     * @param _nameFileFromClient
     * @throws java.lang.InterruptedException
     */
    public void sendFilesToClient(String _nameFileFromClient) throws InterruptedException {
        // создаем новый поток
        // чтобы иметь возможность, использовать его ниже в run()
        Socket sockClient = this.sock;
            Thread threadSendFileToClient = new Thread(() -> {
            // был ли найден файл
            boolean find_file = false;
            try {
                // получаем все файлы из папки сервера(dirServer)
                File dir = new File(dirServer + System.getProperty("file.separator"));
                File[] files = dir.listFiles();
                for (File fileName : files) {
                    if (fileName.getName().equals(_nameFileFromClient)) {
                        try (FileInputStream fis = new FileInputStream(dirServer + System.getProperty("file.separator") + _nameFileFromClient)) {
                            byte[] buffer = new byte[8192];
                            dos.writeUTF(fileName.getName());
                            dos.writeLong(fileName.length());
                            int read; // читаем файл кусками и передаем
                            while ((read = fis.read(buffer)) > 0) {
                                dos.write(buffer, 0, read);
                            }
                            find_file = true;
                        }
                        dos.flush();
                        break;
                    }
                }
                if (!find_file) {
                    pw.println("Не было найдено на сервере...");
                    pw.println(_nameFileFromClient);
                } else {
                    pw.println("Успех");
                    pw.println(_nameFileFromClient);
                }
            } catch (Exception e) {
                pw.println("Ошибка передачи данных с сервера на клиент...");
                System.out.println(sockClient.getInetAddress() + ": Ошибка "
                        + "-ПЕРЕДАЧА ДАННЫХ КЛИЕНТУ-");
                pw.println(_nameFileFromClient);
            }
        });
        threadSendFileToClient.start();
        threadSendFileToClient.join(); // ждем выполнения потока threadSendFileToClient
    }

Руководство пользователя

Поскольку наше приложение по архитектуре клиент-сервер, то в первую очередь нам нужно запустить сервер, который в свою очередь открывает локальное соединение и работает на порту 8030. На рисунке 4 приведена форма сервера.

рисунок 4

Рассмотрим сторону клиента, главная форма клиентского приложения представлена на рисунке 5.

рисунок 5

Скриншот архива с проектом

Содержание архива

  • Исходный код клиентского приложения
  • Исходный код серверного приложения
  • Отчет с 27 страницами + бонус презентация со скриншотами к проекту
  • Pictures - картинки с описания программы со studlearn
Купить 2700,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

2700,00 

Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

MultiThreadFileTransferer.zip
4491847
Оцени работу

рейтинг

Многопоточное клиент-серверное приложение для обмена файлами Java
Целью проекта является разработка клиент-серверного приложения для обмена файлами. Из цели проекта видно, что нам нужно создать два приложения, первым из которых, будет сервер, а вторым клиент. Задачей сервера будет прием и обработка информации от клиентов. Так как клиентов может быть много, сервер будет многопоточным. Задачей клиентского приложения будет передача файлов на сервер и загрузка с сервера нужных файлов от другого клиента или клиентов. Для того, чтобы наше клиентское приложение могло одновременно передавать и скачивать файлы сервера нужно реализовать два потока.
Категория: Образование
Стоимость: 2700,00