Я пишу C ++ приложение MyMasterApp, которое отправляет информацию (OSC через UDP) нескольким клиентам (около 5-10), которые являются мобильными устройствами (Android или iPhone) через Wi-Fi.
Каждое устройство должно получать уникальную информацию того же типа. Вероятно, около 100-200 байт на устройство, и я буду обновлять все устройства с частотой 30 Гц.
Я мог бы отправить уникальный пакет данных на каждое устройство, или я мог бы создать одну большую структуру, которая содержит каждый из уникальных битов данных для каждого устройства, с целевым идентификатором, многоадресно передать это всем устройствам, тогда каждое устройство только выбирает данные это нужно.
то есть
против
Прежде чем я попробую оба подхода, есть ли теоретические или зарегистрированные практические преимущества одного над другим (например, лучшая производительность, меньше коллизий, потерянные пакеты и т. Д.)? Или различия незначительны?
У меня есть связанный вопрос производительности сети о том же проекте в
Должен ли я прослушивать разные порты или один и тот же порт?
Одним из основных преимуществ многоадресной рассылки является масштабируемость, поэтому в будущем, если у вас будет больше устройств, многоадресная рассылка поможет. Лучше смотреть на производительность групповой и одноадресной рассылки для руководства
М. Эбрахими, М. Данешталаб, П. Лильеберг и Х. Тенхунен. Оценка производительности одноадресной и многоадресной связи в трехмерных сеточных архитектурах. В области компьютерной архитектуры и цифровых систем (CADS), 2010 15-й Международный симпозиум CSI, стр. 161-162, сент. 2010.
Даже если оставить в стороне будущий рост, ваши наихудшие случаи использования устройств размером 200 байт x 10 уже составляют 2000 байт, что уже слишком велико для отправки через UDP. Практическая максимальная датаграмма UDP обычно составляет 576 байтов или 534 числа такого рода. Так что у тебя нет выбора. Вы должны индивидуально.