Обработка событий для работы в сети при переполнении стека

В настоящее время я кодировал реализацию сервер / клиент в C ++, где два клиента подключаются к серверу. Я ожидаю от предыдущего опыта (я новичок в C ++), что каждый клиент (и сервер) будет иметь обработчик событий, и события будут приходить, когда либо клиент хочет отправить сообщение на сервер, либо клиент получил сообщение с сервера. Вы можете просмотреть его как чат-сервер; «исходящее» событие от клиента может быть вызвано тем, что пользователь что-то наберет в консоли, а «входящее» событие может быть инициировано путем получения данных с сервера.

Есть ли стандартный способ кодирования этого в C ++? В идеале я хотел бы зарегистрировать функции обратного вызова для каждого возможного типа события, и чтобы зарегистрированная функция обратного вызова передавалась в качестве контекста обработчику события при получении каждого события, чтобы я мог обработать каждое событие в его конкретной функции обработки. И, конечно, после обработки события я хочу, чтобы моя программа вернулась в цикл обработки событий.

Есть идеи? Мне очень нравится стиль программирования, основанный на событиях, поэтому я предпочел бы сохранить его, если это возможно, вместо того, чтобы изучать совершенно новые парадигмы.

-1

Решение

C ++ не имеет встроенной системы обработки событий (в отличие, скажем, от C # и делегатов), но для этого существует множество библиотек. libsigc ++ является одним из них.

В результате любая библиотека, которую вы используете для работы в сети, также должна будет предоставлять код обработки событий, либо свой собственный, либо используя другую библиотеку. И если вы внедряете свой собственный сетевой код, я, честно говоря, думаю, что создание собственного кода для обработки событий не так уж сложно, но я могу быть безумен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]