Что может вызвать "ресурс временно недоступен" по команде 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()
чтобы лучше контролировать это поведение