recv(sockfd, buffer, len, 0);
非ブロッキングソケットで使用するとどうなりますか?
ソケットsockfd
が閉じているか、何も読み取られない場合、recv()
ブロックは実行されますか?(注:のフラグはrecv ()
です0
)。
ソケットが非ブロックとしてマークされている場合、recvはブロックしません。限目。
ソケットに問題はないが、読み取るデータがない場合は、戻り値として-1が返され、errnoがEAGAINに設定されます。
エラー(ソケットが閉じているなど)が発生した場合でも、戻り値は-1になりますが、errnoは適切な値に設定されます。
読み取るものがない場合はブロックされ、ソケットが閉じている場合はエラーで返されます。
recvのマニュアルページを参照してください。