Для этого есть несколько вариантов, некоторые из которых проще в использовании, чем другие:
APR (Apache Portable Runtime) - Очень популярны. Довольно проста в использовании. Включает в себя множество дополнительных функций, удобных для сетевого программирования (потоки, мьютексы и т.д.)
ACE - Популярна среди встроенного пространства. Лично мне он показался довольно сложным API, и не очень простым в использовании.
Boost - Если у вас приличный уровень сложности с C++ (шаблоны, метапрограммирование и т.д.), то библиотеки Boost, как правило, очень хороши. Я не уверен, насколько популярны асинхронные сетевые библиотеки Boost в реальном мире.
QT - популярен как инструментарий пользовательского интерфейса, но имеет отличный набор потоков, управления событиями, сетевых библиотек. IMO, это, безусловно, самый простой в использовании.
Важно держаться подальше от использования библиотеки сокетов berkeley, так как реализации в разных операционных системах сильно различаются, и вы потеряете достаточно много времени на их настройку при переносе программного обеспечения между операционными системами.
Мои личные предпочтения: APR.
Вы можете использовать ACE или Boost.Asio :
О ACE:
Повышенная переносимость - Компоненты ACE позволяют легко писать параллельные сетевые приложения на одной платформе ОС и быстро переносить их на многие другие платформы ОС. Более того, поскольку ACE - это бесплатное программное обеспечение с открытым исходным кодом, вам никогда не придется беспокоиться о привязке к конкретной платформе операционной системы или конфигурации компилятора.
О boost:
Boost.Asio - это кроссплатформенная библиотека C ++ для сетевого программирования и программирования ввода-вывода низкого уровня, которая предоставляет разработчикам согласованную асинхронную модель с использованием современного подхода C ++.
Для этого простого приложения вы можете использовать стандартные функции "сокета Беркли", которые в основном переносимы. Вы также можете использовать абстракции Boost .
Если вам нужны функции безопасности, такие как SSL / TLS (которые, я думаю, вам не нужны для простой игры), существуют библиотеки с открытым исходным кодом, такие как OpenSSL, GNU TLS, Mozilla NSS.
SDL Net - это очень простой уровень абстракции поверх сокетов, который очень прост в использовании. См. http://www.libsdl.org/projects/SDL_net .
NRL имеет действительно отличную библиотеку сетевых методов, которая поддерживает большое количество платформ. Они также имеют отличную поддержку со стороны реальных разработчиков в своих списках рассылки.
У меня такое чувство, что Apache Portable Runtime может помочь с тем, что вы ищете. Apache HTTPD использовал эту библиотеку внутри для абстрагирования своего кода, зависящего от платформы, чтобы код сервера фокусировался на логике и вызывал методы в APR, а они транслировались в базовые функции операционной системы.
Конечно, в нем может быть больше инструментов, чем вам строго нужно ...
Synapse
- хорошая мультиплатформенная сетевая библиотека. Открытый исходный код и очень прост в использовании.