¿Hay alguna biblioteca de red asíncrona en Linux C?

Quiero crear un sistema como el siguiente:

El cliente enviará solicitudes al servidor.

El servidor recibe solicitudes y descarga el archivo de solicitud de la nube de forma asíncrona . Eso significa que el servidor solo recibirá solicitudes y luego las descargará de alguna biblioteca.

La biblioteca notificará al servidor cuando finalice la descarga, luego el servidor notificará al cliente que la descarga finalizó.

¿Hay alguna biblioteca como esa en Linux C? curl_multi_* no bloquea, por lo que necesito sondear curl_multi_perform cada vez, por lo que no es una biblioteca asíncrona ideal para mí. gracias

Respuestas (1)

Hay muchas opciones disponibles. Si está listo para escribir código de bajo nivel y controlar todos los aspectos de la comunicación y el protocolo, entonces uno de ellos es libuv . Según su descripción, las características son:

  • Bucle de eventos con todas las funciones respaldado por epoll, kqueue, IOCP, puertos de eventos.
  • Sockets TCP y UDP asíncronos
  • Resolución DNS asíncrona
  • Operaciones asincrónicas de archivos y sistemas de archivos
  • Eventos del sistema de archivos
  • Código de escape ANSI controlado TTY
  • IPC con uso compartido de sockets, utilizando sockets de dominio Unix o canalizaciones con nombre (Windows)
  • Procesos secundarios
  • Grupo de subprocesos
  • Manejo de señales
  • reloj de alta resolucion
  • Primitivas de enhebrado y sincronización

Además, puede consultar libevent . Lista de características en su mayoría duplicadas de libuv.

Sin embargo, si no está limitado al lenguaje de programación C, le recomendaría que pruebe gRPC . Es fácil de usar y abstrae muchos lugares propensos a errores en su código.

Uso libevent y libcurl, y trato de usar curl_multi_* para hacer asíncrono, ¿alguna sugerencia? gracias
Si tiene alguna pregunta específica sobre cómo usar estas bibliotecas, el mejor lugar para hacerlas es stackoverflow