2012-02-08 10 views
14

Estoy buscando hacer comunicaciones de socket (escuchar, aceptar, conectar, recv, enviar, desconectar) tanto en Linux como en Windows. Mi proyecto está en C, así que a menos que alguien pueda pensar en una forma de integrar bibliotecas C++ en un proyecto C, la biblioteca también tendrá que estar en C.¿Conoce alguna biblioteca de socket multiplataforma (Windows & Linux) en C?

En última instancia, me gustaría que la biblioteca tenga soporte para ipv6 y modo no bloqueante, sin embargo, estas cosas no son esenciales.

¿Alguien sabe de alguna biblioteca/código de ejemplo multiplataforma? Incluso solo fragmentos de código grandes ayudarían. Hasta ahora, las pocas bibliotecas de socket que he encontrado han estado en C++.

Respuesta

9

con la mano izquierda, yo puedo pensar en cuatro bibliotecas:

+0

Muchas gracias, es un comienzo increíble.Por el momento, estoy buscando libuv, ya que parece tener un buen equilibrio entre tamaño/simplicidad y eficiencia. Por curiosidad, ¿cuáles fueron los términos de búsqueda que arrojaron esos resultados? o ya sabías de ellos? –

+1

@ 64bit_twitchyliquid: No recuerdo cuando encontré por primera vez GLib, pero en mi opinión, ocupa el lugar de una lib estándar para C más en sintonía con lo que ofrecen otros idiomas; Encontré APR y NSPR cuando busqué una lib de abstracción de plataforma y sé de libuv porque es utilizado por el lenguaje de programación Rust; de hecho, todos estos, excepto libuv, se enumeran en http://www.shlomifish.org/open-source/portability-libs/, el primer resultado de una búsqueda en Google para * C Cross Platform abstraction lib * – Christoph

3

no sé una biblioteca que cumple tanto para Windows y Linux, pero creo que winsock es lo suficientemente similar a la programación del zócalo Linux.

En particular, le proporciona 'seleccionar()' y las otras funciones mencionadas. Supongo que necesitarás un envoltorio #ifdef muy delgado para evitar advertencias de lanzamiento de tipo.

See here the winsock page for select

-2

Ptlib proporciona código C++ multiplataforma que funciona bien para tomas de corriente. www.opalvoip.org

Se adapta muy bien con los hilos. Algo de soporte para Mac y BSD. En desarrollo activo y mantenimiento. MPL biblioteca Core en Ekiga - la aplicación de escritorio preferido que hace SIP & H.323

para Windows - compila con MSVC. para Linux, se compila con gcc hacer autoconf etc.

bien, es C++, pero se puede trabajar con eso ... Tener una fuente interna del ptlib/muestras - hay muchos ejemplos del uso de ptlib allí.

+0

Estaba pidiendo específicamente una biblioteca C. – Chase

2

La biblioteca plibsys proporciona todas las características solicitadas: multiplataforma y portátil, liviana, proporciona compatibilidad con socket IPv4 e IPv6, así como muchas otras funciones útiles, como multihilo. Funciona con enchufes en modo no bloqueante (aunque también puede cambiar a uno de bloqueo). Tiene una documentación bastante buena con los ejemplos del código de prueba.

Cuestiones relacionadas