Использование readv (), writev () и poll () из C ++ - PullRequest
3 голосов
/ 05 февраля 2010

Существует многопользовательская карточная игра , которую я сначала запрограммировал как сервер сокетов без разветвлений в C (с помощью вызова poll ()).

Тогда мне было слишком сложно добавлять новые функции, и я перешел на Perl (используя модуль IO :: Poll).

Поскольку Perl не поддерживает readv () / writev (), требует больше памяти / ЦП, а также не очень коммерческий (я хочу продать свою игру позже), я бы хотел перенести свой сервер обратно на C ++ в будущем - как только мои функции стабилизируются. (На этот раз C ++, потому что на моем сервере мало объектов).

Может ли кто-нибудь предоставить мне пример, как использовать readv (), writev () и poll () или select () в C ++? Я знаю, как использовать те, что в Perl и C, но я пока не нашел примеров для C ++.

Моя среда: я использую OpenBSD с его gcc / g ++, и я хотел бы, чтобы мой сервер также работал под Linux. Я бы предпочел не использовать какие-либо необычные библиотеки (например, libevent?), Если они не работают и под Windows - потому что, возможно, в будущем я тоже захочу перенести свой сервер на Windows (для этого я думаю, что мне придется вернуться из опроса () чтобы выбрать () и добавить несколько функций Winsock?).

Пожалуйста, позвольте мне добавить, что мне нравятся и Perl, и C, и я очень уважаю C ++, поэтому вопрос не в том, какой язык или ОС лучше. Мой вопрос: как использовать poll () с C ++

Спасибо! Alex

Ответы [ 2 ]

3 голосов
/ 05 февраля 2010

C ++ обрабатывает их точно так же, как C - вот учебник, чтобы вы начали .

Однако, поскольку вы пишете это на C ++, я настоятельно рекомендую вам взглянуть на мощные альтернативы, такие как Boost.Asio framework. Поверьте, вы сэкономите много времени и нервов при внедрении сервера с использованием Asio.

3 голосов
/ 05 февраля 2010

Функции readv(), writev() и poll() работают в C ++ так же, как и в C.

...