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