Здравствуйте, в качестве хобби занимаюсь изучением Can-шины своего авто, для этого собрал плату для raspberry и подключился к Can-шине. Программа candump в stdout выводит данные с Can-шины, примерно 10-20 записей в секунду.
Мне нужно каждую новую строку передавать на iPad, где я и обрабатываю эти данные. По примерам из интернета написал простенький tcp/ip сервер, который работает с одним клиентом.
Для проверки, что вся система работает такого сервера хватало, но теперь мне нужно передавать данные на несколько клиентов и клиенты могут отключаться и подключаться заново.
Подскажите, как проще всего реализовать передачу данных нескольким клиентам, которые могут периодически отключаться?
Готовая библиотека для реализации асинхронного tcp/ip сервер
Подскажите, как проще всего реализовать передачу данных нескольким клиентам, которые могут периодически отключаться?
если с одним клиентом ты не выходил за рамки posix/c,то тоже самое, только надо ещё добавить poll или select к тому винегрету системных вызовов, что уже есть... в сети плавает много таких же небольших примеров на эту тему...
есть ещё несколько вариантов, например форкаться для каждого клиента, что довольно просто, но ограничено и поэтому не самое лучшее решение... или многопоточный вариант, но это обычно излишне в рамках простой задачи и невысоких нагрузок...
если интереуют библиотечные реализации, то свои фреймворки для серверов есть в boost'е, Qt и glib... но без опыта работы с этими либами туда лучше не соваться... простой либы-сервера я на вскидку не припомню...
Может быть можно с помощью http сервера как то организовать беспрерывную передачу строковых данных клиенту?
Может быть можно с помощью http сервера как то организовать беспрерывную передачу строковых данных клиенту?
можно конечно...
из хинтов: нужен будет отстойник между инфой и отсылкой её клиенту... тут можно и обычными файлами обойтись, но ИМХО проще будет с несложной БД... sqlite или мускуль....
Если у тебя интерес к С++, то boost.asio (наверное, самый сложный вариант будет), Python - Tornado (будет строчек 20), ну ,конечно же, golang - стандартный пакет net (асинхронный код, хотя пишешь синхронно. Корутины, все дела)