Como implementar o MSG_DONTWAIT em uma chamada de recv

2

Estou implementando um programa de simulação de servidor e quero verificar se algo foi recebido por meio de um recv de um soquete TCP / IP sem esperar. Quando eu coloco o sinalizador MSG_DONTWAIT, recv retorna um comprimento de -1 e errno de "Resource temproarily anavialable". a chamada funciona quando o sinalizador MSG_WAITALL é usado.

    
por mjmeyer 23.04.2013 / 16:34

1 resposta

3

Isso não é um erro, mas um comportamento esperado. A documentação dos estados MSG_DONTWAIT:

Se nenhum dado estiver disponível, então ao invés de bloquear, retorne imediatamente com o erro EAGAIN.

O que significa que você deve aguardar e lidar com essa situação.

Verifique aqui para referência e aqui para uma discussão similar.

    
por Stef K 23.04.2013 / 17:14