C++ Вопрос по реализации UDP чата

198
22 апреля 2022, 01:10

Нужно реализовать клиент-серверное приложение для обмена сообщениями между компьютерами (простой чат), используя при этом UDP пакеты и только их. Также нужно поверх UDP реализовать подобие TCP, в отправляемом пакете помимо сообщения клиента должна быть контрольная сумма (CRC16). Должен быть реализован метод создания и закрытия сессии, аналогично тому, как это сделано в TCP (можно упрощенный вариант).

Вопрос: Реализовать подключение клиента к серверу собираюсь через трехэтапное рукопожатие. После этого у меня путаница, я не совсем понимаю, что я должен делать дальше.

  1. Должен ли я использовать для подключения новых клиентов 1 сокет на сервере, а после создавать для каждого клиента отдельный сокет, через который осуществлять прием пакетов от клиента и отправку ему же?

  2. Как можно реализовать начало и закрытие сессии? Интересует скорее закрытие, так как логично, что начало сессии начинается при успешном подключении клиента, а вот закрытие? Как пользуясь только UDP пакетами проверить, что пользователь по ту сторону кабеля ещё подключен? Сервер должен отправлять ему какой-то запрос каждые N секунд и проверять ответит ли тот и если нет то отключать? Как это сделать правильно?

READ ALSO
Блокируются элементы дочернего окна в Qt C++

Блокируются элементы дочернего окна в Qt C++

У меня есть три окна: MainWindow, SelectPreset, PresetОкно SelectPreset вызывается из окна MainWindow

185
Пожалуйста найти ошибку. По возможности дорешать задачу

Пожалуйста найти ошибку. По возможности дорешать задачу

Дана квадратная матрицаЕсли в i-ой строке матрицы элемент принадлежащий главной диагонали отрицателен, то заменить этот элемент суммой элементов...

202
Подключение библиотек boost к visual studio code

Подключение библиотек boost к visual studio code

Я установил себе на компьютер boostПрошел все этапы установки по гайду из интернета,подключил скомпилированные библиотеки в cpp-properties

128
Явный вызов деструктора в классе

Явный вызов деструктора в классе

У меня есть класс Function и Hyperbola, который наследует FunctionПоскольку формула гиперболы k / x, то делаю проверку x == 0 и в случае, если х==0 удаляю этот...

144