2010-02-05 2 views
3

Существует multiplayer card game, который я сначала запрограммировал как сервер сокетов без наложения на C (используя вызов poll()).Использование readv(), writev() и poll() из C++

Тогда мне было слишком сложно добавлять новые функции, и я переключился на 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

ответ

3

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

+0

В этом случае нет никакой разницы между функциями C и функциями C++. Вы часто обнаруживаете, что это так (не всегда), но очень часто. –

3

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

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

Смежные вопросы