Skip to content

Latest commit

 

History

History
 
 

10

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Домашнее задание к занятию "TCP клиент"

Цель задания

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


Инструкция к заданию

  1. Скачать исполняемый файл и библиотеки сервера (необходимо для проверки и отладки).
  2. Скачать прекод клиента.
  3. Реализовать функции в клиентском приложении в соответствии с заданием

Задание 1.

Необходимо разработать следующий функционал приложения:

  1. Реализовать следующие методы:
  • TCPclient::TCPclient
  • TCPclient::SendRequest
  • TCPclient::ConnectToHost
  • TCPclient::DisconnectFromHost
  • TCPclient::ProcessingData
  • MainWindow::DisplayTime
  • MainWindow::DisplayStat
  • MainWindow::on_pb_request_clicked
  1. В прилоении должны использоваться сигналы:
  • sig_sendTime
  • sig_Disconnected
  • sig_connectStatus
  • sig_sendStat
  1. Необходимо реализовать обработчкик и вывод в лог следующих сообщений:
  • Приема времени от сервер
  • Вывода статистики сервера
  1. приложение должно подключаться к серверу по введенному пользователем адресу и порту.
  2. Приложение должно отключаться от сервера.

Правила приема работы

  1. Отправлена ссылка на репозиторий с кодом ДЗ

Критерий зачета

  • Реализованы все методы из задания.
  • В приложении используются все сигналы перечисленные в задании
  • Приложение подключается и отключается от сервера.
  • Реализован прием и вывод всех сигналов из задания.
  • Ответ от сервера выводится в удобном для пользователя виде (прим. "Текущая время и дата на сервере 01 фев 2001 21:53:12", а не в виде массива байт)

Дополнительное задание

Дополнительное задание не поджежит проверке. Реализовать прием и отправку всех сообщений соглано Протоколу информационного взаимодействия.


Протокол информационного взаимодействия

  • Сервер отвечает на сообщения клиента.
  • На сервер можно записать строковые данные, которые он интерпретирует как QString.
  • Емкость сервера 1000 байт, как только емкость израсходуется сервер будет отвечать ошибкой, о нехватке места.
  • Сервер отвечает на сообщения клиента согласно настоящиму протоколу инфомрационного взаимодействия (ПИВ).
  • Для запроса инфомрации клиенту необходимо заполнить заголовок в соответствии с текущим ПИВ и передать на сервер.
  • В случае если производится запрос данных с сервера, передается только заголовок.
  • Все структуры данных на сервере выровнены по 1му байту.
Общий формат сообщений
Заголовок сообщения Данные

Формат заголовка сообщения

Поле Тип данных Размер, байт
Идентификатор начала сообщения uint16 2
Идентификатор данных в сообщении uint16 2
Статус обработки сообщения uint8 1
Размер данных далее, байт uint32 4

Форматы сообщений

Сообщение Идентификатор сообщения, dec Формат данных ответа
Запрос текущего времени 100 QDateTime
Запрос свободного места на сервере 101 uint32
Запрос статистики 103 -
Передача строки на сервер 200 QString
Освободить место на сервере 201 Ответ заголовком со статусом 1

Формат ответа статистики сервера

Поле Тип данных Размер, байт
Количество принятых байт uint32 4
Количество переданных байт uint32 4
Количество принятых пакетов uint32 4
Количество переданных пакетов uint32 4
Время работы сервера, сек uint32 4
Количество подключенных клиентов uint32 4

Типы ошибок

Код ошибки, dec Значение
10 Недостаточно места на сервере