2010-02-06 9 views
5

Me preguntaba si habría una API para hacer redes que funcionaría en Windows, Mac y Linux. Me gustaría hacer un juego de cartas que 2 personas puedan jugar a través de una conexión TCP.API de redes multiplataforma API

+0

¡También puede usar SDL_net! – luddbro

Respuesta

7

Hay algunas opciones para esto, algunas más fáciles de usar que otros:

  • TAE (Apache portátil Runtime) - muy popular. Bastante fácil de usar Incluye muchas características adicionales útiles para la programación en red (hilos, mutexes, etc.)

  • ACE - Popular entre el espacio integrado. Personalmente, encontré una API bastante complicada y no muy fácil de usar.

  • Boost - Si tiene un nivel de sofisticación decente con C++ (plantillas, metaprogramación, etc.), entonces las bibliotecas de Boost son generalmente muy buenas. No estoy seguro de cuán populares son las bibliotecas de redes asíncronas de Boost en el mundo real.

  • QT - Popular como un conjunto de herramientas de interfaz de usuario, pero tiene un gran conjunto de enhebrado, administración de eventos, bibliotecas de redes. IMO, este es de lejos el más fácil de usar.

Es importante permanecer lejos de usar la biblioteca de conectores de Berkeley, como las puestas en práctica a través de los sistemas operativos son muy variables, y si no se pierden un poco de tiempo para afinar ellos como portar su software a través de sistemas operativos.

Mi preferencia personal: APR.

2

la mayor parte de los enchufes de berkeley api funciona en todas partes.

0

Tengo la sensación de que Apache Portable Runtime podría ayudar con lo que está buscando. Apache HTTPD utilizó esta biblioteca internamente para abstraer su código específico de la plataforma, de modo que el código del servidor se centre en la lógica y llame a los métodos en la APR y estos se traduzcan en las funciones subyacentes del sistema operativo.

Por supuesto, podría tener más herramientas en él de lo que estrictamente necesario ...

+0

¿Has mirado la APR? Es enorme y complejo. –

+1

Enorme: cierto, pero esa es una necesidad para proporcionar abstracción de la API del sistema operativo, al igual que Java, realmente o .Net. En complejo - no más para que las alternativas. Como se señala en otra respuesta, APR proporciona algunas aplicaciones aptas excelentes ya que httpd ha probado este espacio extensamente. –

1

El laboratorio nacional de referencia tiene una muy gran biblioteca de redes métodos que soporta una gran variedad de plataformas. También cuentan con un excelente soporte de los desarrolladores reales en sus listas de correo.

Protolib

+0

+1 ¡De mí, eso se ve muy bien! –

2

Puede utilizar ACE o Boost.Asio:

Sobre ACE:

mayor portabilidad - componentes de la ECA que sea fácil de escribir aplicaciones en red simultáneas en una plataforma de sistema operativo y rápidamente puerto ellos a muchas otras plataformas de sistema operativo. Además, debido a que ACE es de código abierto, software libre, nunca tendrá que preocuparse por quedar bloqueado en una plataforma de sistema operativo o configuración de compilador en particular.

Acerca de impulso:

Boost.Asio es una biblioteca multiplataforma C++ para la red y de bajo nivel de I/O de programación que proporciona a los desarrolladores un modelo asíncrono coherente utilizando un enfoque moderno C++.

1

Para esta sencilla aplicación, puede utilizar las funciones estándar "socket de Berkeley" que son principalmente portátiles. También puede usar Boost's abstractions.

Si necesitabas funciones de seguridad como SSL/TLS (que no necesitas para un juego simple, supongo), hay bibliotecas de código abierto como OpenSSL, GNU TLS, Mozilla NSS.