Курсовые - Программа отправки и получения текстовых сообщений

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА ОБМЕНА ТЕКСТОВЫМИ СООБЩЕНИЯМИ ПО ПРОТОКОЛУ MQTT

Для создания курсового проекта был использован язык программирования Java. Для создания графического пользовательского интерфейса (GUI) была использована библиотека Swing.

Программа состоит из трёх классов: MainClass, AreaOfSubscribe, AreaOfPublish. Каждый класс отвечает за отдельную часть GUI. Главный класс также содержит методы для обмена сообщениями по протоколу MQTT и связи с брокером.

Примеры методов связи с брокером:

- на примере метода подключения клиента к брокеру:

 

public void Connection(String address, boolean flag)    throws MqttException

  {

    if ((this.newClient != null) &&

      (!address.equals(this.newClient.getConnection())))

    {

      this.newClient.terminate();

      this.newClient = null;

    }

    if (this.newClient == null)

    {

      this.newClient = MqttClient.createMqttClient(address, null);

      this.newClient.registerSimpleHandler(this);

    }

    this.newClient.setRetry(10);

    String str1 = this.id.getText();

    if (isLWTTopicSet())

    {

      this.newClient.connect(str1, this.cleanSessionSelected, (short)this.liveClients, this.topic, this.QoS, this.data, this.RetainSelected);

    }

    else

    {

      this.newClient.connect(str1, this.cleanSessionSelected, (short)this.liveClients);

    }

  }

 

- на примере метода потери соединения:

 

public void connectionLost()

    throws Exception

  {

    int i = -1;

    JOptionPane.showMessageDialog(null, "Соединение потеряно!... Передподключение", "WARNING", JOptionPane.PLAIN_MESSAGE);

    try

    {

      while ((i == -1) && (this.connected))

      {

        try

        {

          synchronized (this.WaitObject)

          {

            this.WaitObject.wait(5000L);

          }

        }

        catch (InterruptedException localInterruptedException) {}

        synchronized (this)

        {

          if (this.connected) {

            try

            {

              Connection(this.newClient.getConnection(), this.newClient.getPersistence() != null);

              i = 0;

            }

            catch (MqttException localMqttException)

            {

              i = -1;

            }

          }

        }

      }

    }

    catch (Exception localException)

    {

      JOptionPane.showMessageDialog(null, "Соединение потеряно!", "ERROR", JOptionPane.PLAIN_MESSAGE);

      Disconnection();

      throw localException;

    }

    if (this.connected) {

      ConnectButtons(true);

    } else {

      ConnectButtons(false);

    }

  }

 

 

  1. АНАЛИЗ РЕЗУЛЬТАТОВ РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ

 

Задачей данной курсовой работы – создание графического интерфейса для отправки текстовых сообщений под протоколом MQTT.

Проведём анализ выполнения программы.

После включения программы, если клиент не подключён к серверу или введены неправильно данные о клиенте программа выдаст предупреждение об ошибке. Результат на рисунке 8.1-8.2

 

 

 

Рис. 8.1 Сообщение об ошибке при подключении к брокеру в случае его отсутствия

 

 

Рис. 8.2 Сообщение об ошибке в случае неправильно введённых данных

 

Так же на рисунках видно, что нажатие кнопок Публикация, Подписка, Отписка и Отключение до подключения к серверу неактивны.

Подключаясь к брокеру, пользователь может подписаться на сообщения произвольной темы, а также опубликовать сообщение произвольной темы, что видно на рисунке 8.3

 

 

                                       

Рис. 8.3 Подписка на определённую тему и публикация сообщения данной темы

 

После нажатие кнопки Отключение происходит отключение от сервера. Также все остальные кнопки переходят в неактивный режим, что является ещё одной защитой для удобной и безопасной работы пользователя. Результат представлен на рисунке 8.4

 

 

 

Рис. 8.4 Отключение от сервера

 

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
Дата Выполнено, %
2020-05-21 20:03:25 10
2020-05-14 13:24:06 70
2020-05-14 14:21:43 100
Открытая Для скрытия необходимо уменьшить величину статуса выполнения.