Лучший способ написать такой сервер - это не написать один, а перестроить вашу систему, чтобы она не требовалась, и / или повторно использовать уже существующие компоненты. Потому что:
Кто-то подключит сенсорное устройство
к их машине в одной части
построить и запустить наш сервер, таким образом
поделиться устройством (ами) с остальными
сеть.
Это также может разделить всю машину с остальной частью сети, если ваш код имеет уязвимость (что, вероятно, так и будет, поскольку вы пишете ее на C ++ с нуля и изобретаете новый протокол).
Итак, сделай это наоборот. Установите простой клиент на компьютере, на котором установлено сенсорное оборудование, затем запускайте его постоянно или периодически и отправляйте (отправляйте) результаты на центральный сервер. Центральный сервер может быть даже стандартным веб-сервером. Или это может быть база данных. (Обратите внимание, что оба они уже написаны - не нужно изобретать велосипед; -)
Тогда ваше приложение работает так же, как вы сейчас себе представляете, однако оно собирает данные из базы данных, а не с датчиков. Однако часть, работающая на машине с датчиком, превратилась из многопоточного пользовательского сервера в кошмар, к хорошему маленькому однопоточному клиенту командной строки, который создает только исходящие соединения и который можно запустить из cron (или эквивалент в windows).
Даже если вам нужен сбор данных в реальном времени (а из вашего описания это звучит так, как будто вы этого не делаете), все же может быть лучше, если сборщик датчиков будет клиентом, а не сервером. Пусть он откроет долгоживущее соединение с центральным коллектором (или группой из них) и будет ждать инструкций для предоставления своих данных.
edit: ответы ceretullis и pukku предлагают хороший вариант использования многоадресной рассылки - см. этот ответ и комментарии