Errno: 11, Resource Temporarily Unavailable

后端 未结 2 709
时光说笑
时光说笑 2021-02-05 14:36

I am using c sockets to implement a reliable UDP protocol. I am using the following code to set a timeout on a socket in which I\'m waiting for an acknowledgement. I am not su

相关标签:
2条回答
  • 2021-02-05 14:41

    For me, the problem was due to ipV6 packets arriving on a UDP socket bound to a particular port. These were triggering the select() but when I tried to read them using recvfrom() the call returned "Resource temporarily unavailable". I don't need IPV6 for my application so I simply disabled it via sysctl.conf. Problem now gone away!

    0 讨论(0)
  • 2021-02-05 14:42

    When calling recvfrom() on a blocking socket and a time out had been set using setsockopt() it is normal to get the error EAGAIN (11) in case the call to recvfrom() timed out (that is: no data was received in the time period specified as time out).

    Verbatim from man recvfrom:

    RETURN VALUE

    ...

    ERRORS

    ... .

    EAGAIN or EWOULDBLOCK The socket is marked non-blocking and the receive operation would block, or a receive timeout had been set and the timeout expired before data was received. ...

    To get around this: Just call recvfrom () again ... ;-)

    0 讨论(0)
提交回复
热议问题