Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo solucionar problemas de bloqueo UDP

Cómo solucionar problemas de bloqueo UDP

La primera vez que se llama a socket() para crear un descriptor de socket, el kernel lo configura en bloqueo. Si no desea que el socket se bloquee, llame a fcntl():

#include lt;unistd.hgt

#include lt;fontl.hgt;

.

sockfd = socket(AF_INET, SOCK_DGRAM, 0);

fcntl(sockfd, F_SETFL, O_NONBLOCK);

.

Si se intenta leer desde un socket sin bloqueo y no hay datos, no se permite el bloqueo: devuelve -1 y establece errno en. EWOLOBLOQUEAR. Pero en términos generales, este tipo de consultas no es una buena idea. Si permite que su programa consulte datos mientras el socket está ocupado, perderá mucho tiempo de CPU.