1

recv(sockfd, buffer, len, 0);非ブロッキングソケットで使用するとどうなりますか?

ソケットsockfdが閉じているか、何も読み取られない場合、recv()ブロックは実行されますか?(注:のフラグはrecv ()です0)。

4

2 に答える 2

2

ソケットが非ブロックとしてマークされている場合、recvはブロックしません。限目。

ソケットに問題はないが、読み取るデータがない場合は、戻り値として-1が返され、errnoがEAGAINに設定されます。

エラー(ソケットが閉じているなど)が発生した場合でも、戻り値は-1になりますが、errnoは適切な値に設定されます。

于 2011-06-02T07:02:50.373 に答える
0

読み取るものがない場合はブロックされ、ソケットが閉じている場合はエラーで返されます。

recvのマニュアルページを参照してください。

于 2011-06-02T07:02:00.793 に答える