socket multiple example ejemplo clients async c sockets asynchronous

multiple - ¿Qué son los zócalos Async?



sockets ejemplo (3)

¿Qué son los zócalos Async? ¿Cómo son diferentes de los enchufes normales (bloqueo y no bloqueo)?

Cualquier sugerencia en esa dirección o cualquier enlace a tutoriales serán útiles.

Gracias.



Hay tres formas de comunicarse con los sockets de manera asincrónica:

  1. Abra el socket regular, pero no lea de él (porque read() bloques) hasta que sepa que hay algo que leer. Puede usar select() o poll() para verificar si hay datos para leer desde el socket (s), y si hay algo, léalo, ya que read() no se bloqueará.

  2. Cambie el socket a E / S sin bloqueo, configurando el indicador fcntl() con la función fcntl() . En este caso, read() no se bloqueará.

  3. Establezca el indicador O_ASYNC del O_ASYNC usando la opción FIOASYNC de ioctl() (vea el man 7 socket para más detalles). En este caso, recibirá la señal SIGIO cuando haya algo que leer en el zócalo.

El tercer enfoque es el socket asíncrono.


Si un servidor usa un socket síncrono, mientras espera datos del cliente, su hilo principal está bloqueado, por lo que el servidor no hará nada ... eso es malo si tiene varios clientes conectados. En un socket asíncrono, PUEDE hacer otras cosas mientras espera que el cliente le envíe datos, por lo que ahora PUEDE tener varios clientes conectados a usted

Synchronous utiliza una función como receive () que bloquea hasta que recibe un mensaje

Asincrónico tiene beginReceive () endReceive () o funciones similares. Utiliza devoluciones de llamada, cuando se recibe un mensaje, se invoca la devolución de llamada