Что может вызвать "ресурс временно недоступен" по команде Sock send()
что может вызвать a Resource temporarily unavailable ошибка на сокете
2 ответа:
"Resource temporarily unavailable"это сообщение об ошибке, соответствующееEAGAIN, что означает, что операция была бы заблокирована, но неблокирующая операция была запрошена. Ибоsend(), это может быть связано с любым из:
- явно помечая файловый дескриптор как неблокирующийся с помощью
fcntl(); или- мимо
MSG_DONTWAITфлагsend(); или- установка таймаута отправки с помощью
SO_SNDTIMEOопции сокета.
это потому, что вы используете
non-blockingсокет и выходной буфер заполнен.С
send()на страницеWhen the message does not fit into the send buffer of the socket, send() normally blocks, unless the socket has been placed in non-block- ing I/O mode. In non-blocking mode it would return EAGAIN in this case.EAGAIN является ли код ошибки привязан к "ресурс временно недоступен"
рассмотрите возможность использования
select()чтобы лучше контролировать это поведение