В состав группы разработчиков, с которой я работаю, была поставлена задача написать сервер для интеграции с нашим продуктом. У нас есть некоторые низкоуровневые сенсорные устройства, которые обеспечивают SDK SD, и мы хотим поделиться ими по сети для использования людьми, собирающими данные. Звучит просто, не так ли? Кто-то подключит сенсорное устройство к своей машине в одной части здания и запустит наш сервер, таким образом, совместно используем устройства (-и) с остальной частью сети. Затем клиент будет подключаться к этому серверу через наше приложение и собирать показания датчика с устройства.
Я создал простой, язык-агностический сетевой протокол и ссылку на Java. Проблема заключается в создании реализации, которая будет работать с нашими устройствами, которые предоставляют только SDK, написанный на C. Мы думали сделать следующее:
- Создайте опросные потоки, которые собирают и сохраняют самые последние показания с каждого подключенного устройства.
- Используйте многопоточный сервер, чтобы открутить каждое входящее соединение к рабочему потоку.
- Когда рабочий поток получает запрос на считывание датчика, последнее сообщение, полученное потоком опроса, отправляется обратно клиенту.
Это много потоков, особенно в C. Итак, чтобы рассмотреть, общие требования:
- Работает на компьютерах под управлением Windows XP/Vista, Linux и OS X.
- Написанный на C или С++, для взаимодействия с SDK SD мы имеем
- Принимает переменное количество одновременных подключений (рабочие потоки)
- Необходимо использовать потоки, а не разветвлять (не хотят иметь дело с другим уровнем IPC)
Может ли кто-нибудь предложить библиотеку и желательно какой-то пример кода для начала использования?