Я говорю с устройством через сокет UDP. Я отправляю команду, а затем получаю от нее ответ. Сообщения должны отправляться каждые 100 мс. Я установил тайм-аут приема с
struct timeval t = {.tv_sec = 0, .tv_usec = 100000};
setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, t, sizeof(t));
где fd
- мой дескриптор файла сокета. Все отлично работает долгое время, но потом я получаю сообщение об ошибке Resource temporarily unavailable
при вызове recvfrom(...)
. Насколько я понимаю, это происходит потому, что в буфере приема ничего нет. Я ожидал бы, что на следующей итерации буфер будет заполнен, но я все еще получаю Resource temporarily unavailable
. Другими словами, система не восстанавливается. Это проблема с самим сокетом, настройками на сокете или устройством?