Клиент-сервер. Как лучше оповещать клиента?

Пишу на C/C++ под Линукс. Ситуация: есть сервер, если клиент. Клиент запрашивает данные с сервера вызовом send(), ждет ответ вызовом recv(). Сервер в свою очередь слушает порт вызовом accept(), далее получает запрос через recv() и отвечает через send(). То есть клиент просит, сервер отвечает. Представим, что на сервере появляются данные для клиента.

Вопрос: есть ли механизм или решение, лучшее чем раз в секунду опрашивать сервер на наличие данных для клиента? Можно ведь и клиенту открыть сокет на вход, но разумно ли это, есть ли такая практика вообще?


Ответы (1 шт):

Автор решения: Sergey

Можно ведь и клиенту открыть сокет на вход, но разумно ли это, есть ли такая практика вообще?

В протоколе SNMP абсолютно такая же ситуация. И там менеджер (клиент) слушает 162 порт, что бы получать незапланированные уведомления - trap-ы, которые в неопределённые моменты времени может отправлять ему агент (сервер).

Так что - вполне себе адекватное решение, проверенное миллион раз :-)

→ Ссылка