Russian Qt Forum

Qt => Работа с сетью => Тема начата: chu от Май 10, 2012, 11:53



Название: Представление презентации по локальной сети
Отправлено: chu от Май 10, 2012, 11:53
Пишу программу для проведения онлайн презентаций. Точнее две: сервер и клиент.
Сейчас механизм следующий:
  • Запускается TCP сервер, который слушает все адреса на порту 2323 (номер порта взял из примера, как правильно выбрать порт? Сейчас и с этим портом все работает нормально, но на будущее хотелось бы знать принципы выбора порта)
  • Запускаются клиенты, устанавливают TCP соединение с сервером.
  • На сервере запускается презентация. При смене слайда широковещательно отправляет UDP пакет типа "кому передать новое изображение?" на порт 45454 (опять же взят из примера)
  • Клиент принимает данное сообщение и отправляет запрос через TCP сокет на передачу данных (QPixmap)
  • Сервер получает запрос, записывает в сокет QPixmap, клиент его получает и отображает.
Всё это работает, но меня беспокоит на сколько правильно это организованно.
Стоит ли сохранять соединение клиента с сервером на протяжении всей презентации или лучше подключаться только при передаче QPixmap'а, а потом сразу отключаться и ждать пакетов UDP?
Или лучше обойтись без UDP: после установки TCP соединения, посылать запрос на изображение, ждать ответа (несколько минут), получить ответ с данными изображения, отобразить изображение и сразу же послать следующий запрос и опять ждать?
Или обойтись без TCP. Расчленять изображения на куски и отправлять по UPD. На сколько это надежно?


Название: Re: Представление презентации по локальной сети
Отправлено: V1KT0P от Май 10, 2012, 12:01
Порт выбирай какой-хочешь, но лучше на википедии глянь свободные порты(порты которые не используют популярные программы).
QPixmap же вроде распакованные данные содержит, не жирно ли будет? Я бы либо в png либо в jpeg передавал бы.
Лучше держать открытым, ибо у тебя от сервера клиентам передается. А значит если клиент будет за NAT-ом то сервер не достучится до клиента.
Я бы на твоем месте использовал только TCP, он гарантирует целостность передаваемых данных, а UDP нет, а значит тебе придется самому это реализовывать.


Название: Re: Представление презентации по локальной сети
Отправлено: chu от Май 10, 2012, 12:07
Спасибо!