Клиент-сервер. Как лучше оповещать клиента?
Пишу на C/C++ под Линукс. Ситуация: есть сервер, если клиент. Клиент запрашивает данные с сервера вызовом send(), ждет ответ вызовом recv(). Сервер в свою очередь слушает порт вызовом accept(), далее получает запрос через recv() и отвечает через send(). То есть клиент просит, сервер отвечает. Представим, что на сервере появляются данные для клиента.
Вопрос: есть ли механизм или решение, лучшее чем раз в секунду опрашивать сервер на наличие данных для клиента? Можно ведь и клиенту открыть сокет на вход, но разумно ли это, есть ли такая практика вообще?
Ответы (1 шт):
Можно ведь и клиенту открыть сокет на вход, но разумно ли это, есть ли такая практика вообще?
В протоколе SNMP абсолютно такая же ситуация. И там менеджер (клиент) слушает 162 порт, что бы получать незапланированные уведомления - trap-ы, которые в неопределённые моменты времени может отправлять ему агент (сервер).
Так что - вполне себе адекватное решение, проверенное миллион раз :-)