I am implementing a server simulation program and want to check if anything was received via a recv from a TCP/IP socket witout waiting. When I place the MSG_DONTWAIT flag, recv returns a length of -1 and errno of "Resource temproarily anavialable". the call works when the MSG_WAITALL flag is used.
This is not an error but an expected behavior. The documentation of MSG_DONTWAIT states:
If no data is available, then instead of blocking, return immediately with the error EAGAIN.
Which means that you should wait for and handle such situation.